Ubuntu 14.04에서 Graphite에 대한 시스템 메트릭을 수집하도록 Collectd를 구성하는 방법


소개

데이터 수집 및 시각화는 서버 및 프로젝트에 대해 정보에 입각한 결정을 내리는 중요한 방법입니다.

이전 가이드에서 서버의 데이터를 시각화하기 위해 Graphite를 설치하고 구성하는 방법에 대해 설명했습니다. 그러나 데이터를 수집하거나 Graphite로 전달하는 좋은 방법이 없었습니다.

이 가이드에서는 서버 및 실행 중인 서비스에 대한 메트릭을 수집하고 구성할 수 있는 시스템 통계 수집기인 collectd의 설치 및 사용에 대해 설명합니다.

렌더링을 위해 데이터를 Graphite로 전달하기 위해 collect를 설치하고 구성하는 방법을 보여줍니다. 지난 가이드에서 보여드린 것처럼 Ubuntu 14.04 서버에서 Graphite가 실행되고 있다고 가정합니다.

콜렉트 설치

가장 먼저 할 일은 collectd를 설치하는 것입니다. 기본 리포지토리에서 가져올 수 있습니다.

로컬 패키지 색인을 새로 고친 후 다음을 입력하여 설치합니다.

sudo apt-get update
sudo apt-get install collectd collectd-utils

이렇게 하면 데몬과 도우미 제어 인터페이스가 설치됩니다. 수집한 데이터를 Graphite로 전달하는 것을 알 수 있도록 구성해야 합니다.

Collectd 구성

루트 권한으로 편집기에서 collectd 구성 파일을 열어 시작합니다.

sudo nano /etc/collectd/collectd.conf

가장 먼저 설정해야 하는 것은 우리가 있는 시스템의 호스트 이름입니다. collectd는 원격 Graphite 서버에 정보를 보내는 데 사용할 수 있지만 이 가이드에서는 동일한 시스템에서 이것을 사용하고 있습니다. 원하는 이름을 선택할 수 있습니다.

<예비>

실제 도메인 이름을 구성한 경우 이를 건너뛰고 FQDNLookup을 그대로 두어 서버가 DNS 시스템을 사용하여 적절한 도메인을 가져올 수 있습니다.

호스트에서 데이터를 쿼리하기 전에 collectd가 대기하는 간격인 "간격”에 대한 매개변수가 있음을 알 수 있습니다. 기본적으로 10초로 설정됩니다. Graphite 기사를 따라했다면 다음을 알 수 있습니다. 는 Graphite가 통계를 추적하는 가장 짧은 간격입니다. 데이터가 안정적으로 기록되려면 이 두 값이 일치해야 합니다.

다음으로 Collectd가 정보를 수집할 서비스에 바로 들어갑니다. Collectd는 플러그인을 사용하여 이를 수행합니다. 대부분의 플러그인은 시스템에서 정보를 읽는 데 사용되지만 플러그인은 정보를 보낼 위치를 정의하는 데에도 사용됩니다. Graphite는 이러한 쓰기 플러그인 중 하나입니다.

이 가이드에서는 다음 플러그인이 활성화되어 있는지 확인합니다. 다른 플러그인을 주석 처리하거나 호스트에서 시도하려는 경우 올바르게 구성할 수 있습니다.

LoadPlugin apache
LoadPlugin cpu
LoadPlugin df
LoadPlugin entropy
LoadPlugin interface
LoadPlugin load
LoadPlugin memory
LoadPlugin processes
LoadPlugin rrdtool
LoadPlugin users
LoadPlugin write_graphite

이들 중 일부는 구성이 필요하고 일부는 기본적으로 잘 작동합니다.

파일 아래로 계속 내려가면 각 플러그인의 구성 섹션에 도달합니다. 플러그인은 각 구성 섹션에 대해 "블록\을 정의하여 구성됩니다. 이것은 Apache가 블록 내에서 지시문을 구획화하는 방법과 다소 유사합니다. 대부분의 플러그인이 제대로 작동하므로 이 중 몇 가지만 살펴보겠습니다. 그들은.

우리는 Graphite를 제공하기 위해 Apache를 설치했기 때문에 Apache 플러그인을 활성화했습니다. 다음과 같은 간단한 섹션으로 Apache 플러그인을 구성할 수 있습니다.

<예비>

프로덕션 환경에서는 인증 계층 뒤에서 보호된 서버 통계를 유지하고자 할 수 있습니다. 파일의 이 섹션에서 주석 처리된 코드를 보고 어떻게 작동하는지 확인할 수 있습니다. 단순화를 위해 인증되지 않은 개방형 설정을 보여드리겠습니다.

잠시 후 필요한 세부 정보를 제공하는 Apache용 server-status 페이지를 만들 것입니다.

디스크가 얼마나 찼는지 알려주는 df 플러그인의 경우 다음과 같은 간단한 구성을 추가할 수 있습니다.

<예비>

장치는 시스템에 있는 드라이브의 장치 이름을 가리켜야 합니다. 터미널에 다음 명령을 입력하여 찾을 수 있습니다.

<예비>

모니터링할 네트워킹 인터페이스를 선택합니다.

<예비>

마지막으로 Graphite 플러그인에 도달했습니다. 이것은 Graphite 인스턴스에 연결하는 방법을 collect에게 알려줄 것입니다. 섹션을 다음과 같이 보이게 합니다.

<예비>

이것은 데이터를 전달하기 위해 Carbon에 연결하는 방법을 데몬에게 알려줍니다. Carbon이 TCP 연결을 수신하는 데 사용하는 포트 2003에서 로컬 컴퓨터를 찾도록 지정합니다.

다음으로 해당 프로토콜을 사용하여 데이터를 Carbon에 안정적으로 전달하도록 지시합니다. 핸드 오프에 대한 오류를 기록하도록 지시한 다음 데이터의 접두사를 설정합니다. 이 값은 점으로 끝나므로 이 호스트에 대한 모든 collectd 통계는 "collectd\ 디렉토리에 저장됩니다.

상점 비율은 통계가 통과되기 전에 게이지로 변환되는지 여부를 결정합니다. 데이터 소스 추가 라인은 활성화된 경우 메트릭에 노드 이름을 추가합니다. 이스케이프 문자는 점이 있는 특정 값을 Carbon이 디렉토리로 분할하지 않도록 변환하는 방법을 결정합니다.

완료되면 파일을 저장하고 닫습니다.

통계를 보고하도록 Apache 구성

구성 파일에서 Apache 통계 추적을 활성화했습니다. 그래도 이를 허용하도록 Apache를 구성해야 합니다.

Graphite에 대해 활성화한 Apache 가상 호스트 파일에서 Apache가 통계를 보고하도록 지시하는 간단한 위치 블록을 추가할 수 있습니다.

텍스트 편집기에서 파일을 엽니다.

sudo nano /etc/apache2/sites-available/apache2-graphite.conf

"content\ 위치 블록 아래에 다른 블록을 추가하여 Apache가 /server-status 페이지에서 통계를 제공하도록 합니다. 다음 섹션을 추가합니다.

<예비>

<span class="highlight">&lt;Location "/server-status"&gt;</span>
    <span class="highlight">SetHandler server-status</span>
    <span class="highlight">Require all granted</span>
<span class="highlight">&lt;/Location&gt;</span>

ErrorLog ${APACHE_LOG_DIR}/graphite-web_error.log

완료되면 파일을 저장하고 닫습니다.

이제 Apache를 다시 로드하여 새 통계에 액세스할 수 있습니다.

sudo service apache2 reload

웹 브라우저에서 페이지를 방문하여 모든 것이 올바르게 작동하는지 확인할 수 있습니다. 도메인으로 이동한 다음 /server-status로 이동하면 됩니다.

<예비>

다음과 같은 페이지가 표시됩니다.

스토리지 스키마 및 집계 설정

서비스에 대한 통계를 수집하도록 수집 구성했으므로 이제 Graphite가 수신하는 데이터를 올바르게 처리하도록 조정해야 합니다.

저장소 스키마 정의를 생성하여 시작하겠습니다. 스토리지 스키마 구성 파일을 엽니다.

sudo nano /etc/carbon/storage-schemas.conf

내부에는 정보가 보관되는 기간과 다양한 수준에서 데이터가 얼마나 상세해야 하는지를 나타내는 정의를 추가해야 합니다.

수집된 정보를 하루 동안 10초 간격으로, 7일 동안 1분 간격으로, 1년 동안 10분 간격으로 저장하도록 Graphite에 지시합니다.

이를 통해 최근 활동에 대한 자세한 정보와 장기적으로 일반적인 경향 사이에 균형을 잘 잡을 수 있습니다. Collectd는 collectd 문자열로 시작하는 메트릭을 전달하므로 해당 패턴을 일치시킵니다.

우리가 설명한 정책은 다음 줄을 추가하여 추가할 수 있습니다. 기본 정책 위에 다음을 추가해야 합니다. 그렇지 않으면 적용되지 않습니다.

[collectd]
pattern = ^collectd.*
retentions = 10s:1d,1m:7d,10m:1y

완료되면 파일을 저장하고 닫습니다.

서비스 다시 로드

이제 collectd가 구성되고 Graphite가 데이터를 처리하는 방법을 알고 있으므로 서비스를 다시 로드할 수 있습니다.

먼저 Carbon 서비스를 다시 시작하십시오. "restart\ 명령 대신 몇 초 간격으로 "stop\ 명령을 사용한 다음 "start\ 명령을 사용하는 것이 좋습니다. 이렇게 하면 다시 시작하기 전에 데이터가 완전히 플러시됩니다.

sudo service carbon-cache stop          ## wait a few seconds here
sudo service carbon-cache start

Carbon 서비스가 다시 실행되고 나면 collectd로 동일한 작업을 수행할 수 있습니다. 서비스가 아직 실행 중이 아닐 수 있지만 이렇게 하면 데이터를 올바르게 처리할 수 있습니다.

sudo service collectd stop
sudo service collectd start

그런 다음 도메인을 다시 방문할 수 있으며 수집된 정보가 포함된 새 트리가 표시됩니다.

결론

collectd 구성이 완료되었으며 통계가 이미 기록되고 있습니다! 이제 서버와 서비스를 추적하도록 구성된 데몬이 있습니다.

필요에 따라 collectd에 대한 추가 플러그인을 구성하거나 작성할 수 있습니다. collectd가 있는 추가 서버도 Graphite 서버에 데이터를 보낼 수 있습니다. Collectd는 주로 공통 서비스 및 시스템 전체에 대한 통계를 수집하는 데 사용됩니다.

다음 기사에서는 데이터를 Graphite로 플러시하기 전에 데이터를 캐시할 수 있는 서비스인 StatsD를 설정합니다. 이렇게 하면 이전 기사에서 설명한 것처럼 너무 빨리 통계를 보낼 때 데이터 손실 문제를 해결할 수 있습니다. 또한 자체 프로그램 및 프로젝트 내에서 통계를 추적할 수 있는 인터페이스를 제공합니다.

저스틴 엘링우드