Computer >> 컴퓨터 >  >> 프로그래밍 >> Ruby

인프라 가시성 향상:StatsD 및 AppSignal의 독립형 에이전트를 사용하여 모든 시스템 모니터링

애플리케이션을 모니터링하는 것만으로는 시스템 전체를 파악하는 데 항상 충분하지 않습니다. 위성 앱(또는 지원 앱)에서 실행되는 서비스는 일상적인 작업에 심각한 영향을 미칠 수 있는 경우가 많습니다. 데이터베이스 서버는 이에 대한 잘 알려진 예입니다. 백업 스크립트 및 기타 백그라운드 작업도 시스템 속도를 저하시킬 수 있으며 간과되는 경우가 많습니다.

Node.js용 AppSignal APM, Ruby APM 및 Elixir APM은 앱 자체를 자동으로 계측합니다. 그러나 AppSignal은 기본적으로 이러한 위성 프로세스를 감시하지 않습니다. 어디에서나 모니터링을 확장하고 단일 앱에 모든 데이터를 보관하려면 AppSignal의 독립형 에이전트를 설치하면 됩니다.

AppSignal의 독립형 에이전트

독립형 에이전트는 일반적으로 Ruby, Elixir 또는 JavaScript 애플리케이션을 계측하는 데 사용하는 것과 동일한 소프트웨어를 기반으로 합니다. 이 소프트웨어는 독립형 모드에서도 실행될 수 있습니다.

독립형 에이전트를 사용하여 다음을 모니터링할 수 있습니다.

  • 인프라 :시스템의 일부이지만 애플리케이션 코드를 실행하지 않는 기계입니다.
  • 백그라운드 작업 :집약적인 크론 작업이나 장기 실행 데이터 처리 스크립트 등이 있습니다. 이러한 백그라운드 작업이 지원되는 언어(Ruby, Elixir 또는 Node.js)로 작성된 경우 표준 통합을 사용할 수 있습니다.
  • 더 많은 언어 :기본적으로 지원되는 언어 이외의 언어로 작성된 프로그램.

예를 들어 독립 실행형 에이전트를 사용하면 Python으로 작성된 기계 학습 모델을 추적하고, 백업 스크립트를 계측하고, Kafka 브로커를 모니터링하거나 웹 팜에서 호스트 메트릭을 수집할 수 있습니다. AppSignal에서 이 모든 정보를 확인하여 기본 애플리케이션에 대해 이미 보유하고 있는 지표를 보완할 수 있습니다.

작동 방식

에이전트는 deb 또는 rpm 패키지로 제공되며 언어 종속성이 없습니다. Debian/Ubuntu 또는 Red Hat 기반 시스템에서 실행됩니다. 자세한 설치 지침은 에이전트 설명서를 확인하세요.

일단 설치되면 에이전트는 몇 분 안에 구성되며 데몬으로 계속 실행되어 인프라를 자동으로 모니터링합니다. 게다가 에이전트에는 사용자가 로그인한 모든 사용자 정의 데이터를 AppSignal 대시보드에 전달하는 StatsD 서버가 포함되어 있습니다.

StatsD란 무엇인가요?

StatsD는 임의의 데이터를 수집하고 집계하는 표준입니다. 이는 메트릭 및 성능 정보 로깅에 중점을 둡니다. 이는 컴퓨터에서 차지하는 공간이 작은 UDP 연결을 통해 경량 텍스트 프로토콜을 사용합니다.

StatsD 메시지는 다음과 같습니다:

여기서 KEY 임의의 문자열이고 VALUE 숫자입니다. 유형 값은 숫자가 처리되는 방식을 정의합니다.

우리는 세 가지 유형의 측정항목을 지원합니다:

  • :이것은 카운터입니다 호출될 때마다 증가합니다. 예를 들어 active_users:1|c active_users에 1을 추가합니다. 카운터.
  • :게이지 숫자 값을 가져와 업데이트될 때까지 유지합니다. 이는 처리량, 활성 사용자 수 또는 대기열에 보류 중인 작업 수와 같이 시간이 지남에 따라 증가 및 감소하는 값을 기록하는 데 유용합니다.
  • t :타이밍을 저장합니다. 가치. 이 유형은 기간 추적에 이상적입니다. AppSignal은 기록된 모든 타이밍에 대한 평균, 개수 및 백분위수를 계산합니다.

지원되지 않는 다른 측정항목 유형은 자동으로 무시됩니다.

StatsD로 데이터 전송

독립 실행형 에이전트는 포트 8125에서 UDP 패킷을 수신합니다. netcat을 사용하여 명령줄에서 StatsD 형식의 문자열을 보낼 수 있습니다:

 

UDP를 사용하고 있기 때문에 응답을 기다릴 필요가 없습니다.

Socat도 작동합니다:

 

이를 통해 배치 또는 크론 작업을 쉽게 계측할 수 있습니다. 예를 들어, 다음 줄은 게이지를 사용하여 백업 작업으로 생성된 데이터 양을 기록합니다.

 

우리는 정수에만 국한되지 않습니다. StatsD는 부동 소수점 숫자에도 작동합니다:

 

측정항목에 태그를 추가할 수 있습니다. StatsD 서버는 메시지 끝에 선택적 태그를 지원합니다:

동일한 메시지에 여러 태그를 적용하고 나중에 필터링할 값을 할당할 수 있습니다:

 

AppSignal에서 데이터를 보는 방법에 대해 잠시 알아보겠습니다.

계측 언어

StatsD 서버는 UDP 패킷을 보낼 수 있는 모든 언어와 호환됩니다. 몇 가지 예를 살펴보겠습니다.

Python은 데이터 마이닝 및 기계 학습에 널리 사용되는 언어입니다. 내장 socket을 사용하여 Python 애플리케이션에 계측을 추가할 수 있습니다. 라이브러리:

 

java.net를 사용하면 Java에서도 비슷한 결과를 얻을 수 있습니다. 라이브러리:

 

PHP는 엄청나게 인기 있는 언어의 또 다른 예입니다. socket_sendto로 UDP 패킷을 보낼 수 있습니다. :

 

StatsD 클라이언트

지금까지 우리는 모든 언어에 내장된 네트워킹 기능을 사용했습니다. 하지만 더 많은 것이 있습니다. 많은 언어와 제품에는 타사 StatsD 클라이언트 또는 애드온이 포함되어 있습니다. 최소한 지원되는 데이터 유형에 대해서는 모든 StatsD 호환 클라이언트가 작동해야 합니다. StatsD 프로젝트 위키에서 클라이언트 목록을 찾을 수 있습니다.

AppSignal에서 호스트 데이터 보기

호스트 측정항목 대시보드는 컴퓨터의 리소스 활용도를 보여줍니다:

인프라 가시성 향상:StatsD 및 AppSignal의 독립형 에이전트를 사용하여 모든 시스템 모니터링

AppSignal은 독립형 에이전트를 실행하는 모든 시스템에 대한 항목을 추가합니다.

인프라 가시성 향상:StatsD 및 AppSignal의 독립형 에이전트를 사용하여 모든 시스템 모니터링

대시보드에는 로드 및 CPU 평균 디스크, 네트워크, 메모리 및 스왑 사용량이 표시됩니다.

인프라 가시성 향상:StatsD 및 AppSignal의 독립형 에이전트를 사용하여 모든 시스템 모니터링

인프라 가시성 향상:StatsD 및 AppSignal의 독립형 에이전트를 사용하여 모든 시스템 모니터링

대시보드 만들기

AppSignal은 전송된 StatsD 값에 대한 대시보드를 자동으로 생성하지 않습니다. 이를 위해서는 사용자 정의 대시보드를 생성해야 합니다.

먼저 대시보드 추가를 클릭하세요. 대시보드 메뉴 아래:

인프라 가시성 향상:StatsD 및 AppSignal의 독립형 에이전트를 사용하여 모든 시스템 모니터링

대시보드에 이름을 지정하세요:

인프라 가시성 향상:StatsD 및 AppSignal의 독립형 에이전트를 사용하여 모든 시스템 모니터링

그래프 추가 클릭 버튼을 누르면 그래프 빌더가 표시됩니다:

인프라 가시성 향상:StatsD 및 AppSignal의 독립형 에이전트를 사용하여 모든 시스템 모니터링

그래프에 이름을 지정하고 측정항목 추가를 클릭하세요. :

인프라 가시성 향상:StatsD 및 AppSignal의 독립형 에이전트를 사용하여 모든 시스템 모니터링

메뉴에서 관심 있는 측정항목을 선택하세요.

인프라 가시성 향상:StatsD 및 AppSignal의 독립형 에이전트를 사용하여 모든 시스템 모니터링

선택적으로 필터링을 위해 태그를 사용하세요:

인프라 가시성 향상:StatsD 및 AppSignal의 독립형 에이전트를 사용하여 모든 시스템 모니터링

그런 다음 개요로 돌아가기를 클릭하세요. . 표현하려는 데이터에 가장 적합한 것이 무엇인지 찾기 위해 다양한 그래프 유형과 값 단위를 시도해 볼 수 있습니다.

평균과 백분위수가 더 명확하게 표시되므로 영역 그래프를 사용하면 타이밍 데이터가 더 잘 보입니다.

인프라 가시성 향상:StatsD 및 AppSignal의 독립형 에이전트를 사용하여 모든 시스템 모니터링

선 그래프는 카운터와 게이지에 적합합니다.

인프라 가시성 향상:StatsD 및 AppSignal의 독립형 에이전트를 사용하여 모든 시스템 모니터링

결과가 만족스러우면 그래프 만들기를 클릭하세요. .

인프라 가시성 향상:StatsD 및 AppSignal의 독립형 에이전트를 사용하여 모든 시스템 모니터링

Node.js용 성능 모니터링 도구(APM)나 Ruby(on Rails) APM 또는 Elixir APM으로 AppSignal을 설정한 경우 자동으로 계측되거나 측정된 다른 측정항목에 대한 대시보드를 추가할 수도 있습니다.

마무리

우리는 AppSignal의 독립형 서버를 사용하여 시스템과 위성 코드를 감시하는 방법을 배웠습니다. 내장된 StatsD 서버를 사용하면 임의의 성능 데이터를 기록하고 모든 프로세스를 계측할 수 있습니다.

독립형 에이전트 사용에 대해 자세히 알아보려면 다음 링크를 확인하세요.

  • StatsD 참조.
  • 맞춤 측정항목을 보내는 방법
  • AppSignal에서 대시보드 생성.
  • 독립 실행형 에이전트의 Kafka 문제 식별 및 해결
인프라 가시성 향상:StatsD 및 AppSignal의 독립형 에이전트를 사용하여 모든 시스템 모니터링

토마스 페르난데스

객원 저자인 Tomas는 10년 동안 IBM에서 근무하면서 개발, 서비스 제공, 데이터베이스 관리, 클라우드 엔지니어링 등 모든 일을 했습니다. 그는 현재 독립 컨설턴트이자 기술 작가입니다.

Tomas Fernandez의 모든 기사