Monitoring

Telegraf를 통한 다양한 데이터 수집 및 설정 방법

아장아장 초보 개발자 2024. 6. 17. 19:17
728x90
반응형

cpu, memory, disk 등 메트릭 수집하기

아래와 같이 수집하길 원하는 메트릭 input 플러그인과 수집한 메트릭을 쌓을 output 플러그인을 작성하면 됩니다.

각 메트릭별로 설정 옵션이 다르기 때문에 telegraf plugin 페이지에서 설정 방법 및 옵션에 대해 확인할 수 있습니다. 저의 경우 cpu, memory, disk를 수집하여 influxdb에 쌓도록 설정했습니다.

[global_tags]
  user= "yunha"

[agent]
  #생략
  interval = "60s"
  logfile="/var/log/telegraf.log"
  
[[inputs.cpu]]
  totalcpu = true
  
[[inputs.mem]]
  
[[inputs.disk]]
  interval = "80s"
  ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]

[[outputs.influxdb]]
  urls = ["<http://localhost:8086>"]
  database = "test"
  retention_policy = "autogen"
  username = "admin"
  password = "admin"

 

이렇게 수집 된 데이터는 kapacitor를 통해 쉽게 확인할 수 있습니다. kapacitor 설치 및 확인 방법은 다음 포스팅에서 이어가도록 하겠습니다~우선 kapacitor 설치는 넘어가고 제대로 데이터가 쌓이고 있는지 확인해보겠습니다.

 

설정된 tag와 함께 수집된 데이터 (kapacitor 화면)

 

위의 설정에서 입력한 user와 cpu 옵션인 cpu-total 값이 제대로 쌓이고 있는 것을 확인할 수 있습니다. 물론 아래와 같이 influxdb에 직접 접근해서 쿼리를 통해 확인할 수 있습니다.

(kapacitor를 사용하면 쿼리도 만들어주고 다양한 형태의 그래프나 표로 확인할 수 있어 편리합니다 🙂)

 

influxdb로 수집된 데이터 조회

 

exec plugin을 통해 프로세스 개수 수집하기

Telegraf의 exec 플러그인은 외부 명령어를 실행하여 그 출력을 수집하는 데 사용됩니다. 이 플러그인을 사용하면 사용자 정의 스크립트나 프로그램의 출력을 Telegraf가 수집할 수 있습니다.

  • 명령어 실행: 지정된 명령어를 주기적으로 실행합니다.
  • 형식 지원: 명령어의 출력을 JSON, Influx, Graphite, 또는 value 형식으로 처리합니다.

아래의 예제에서는 현재 실행 중인 프로세스 개수를 수집하도록 설정했습니다.

[[inputs.exec]]
  interval = "10s"
  commands = ["sh -c 'ps aux | wc -l'"]
  timeout = "5s"
  data_format = "value"

  [inputs.exec.tags]
    tag1 = "process_count"

 

프로세스 개수의 경우 단일 값으로 결과를 받기 때문에 data_format을 value로 설정했습니다.

또한 어떤 값인지 구분하기 위해 tag를 추가해서 구분할 수 있도록 설정했습니다. kapacitor를 통해 확인해보면 tag1=process_count tag에 프로세스 개수가 잘 쌓이는 것을 확인할 수 있습니다.

exec로 수집한 process_count 조회(kapacitor 화면)

 

data_format 종류
json: 명령어 출력이 JSON 형식인 경우 사용합니다.
influx: InfluxDB의 라인 프로토콜 형식을 사용합니다.
graphite: Graphite의 라인 프로토콜 형식을 사용합니다.
value: 단일 값으로 출력되는 경우 사용합니다. data_type 옵션으로 값을 integer, float, string 중 하나로 지정해야 합니다.

 

 

exec 플러그인의 자세한 설정은 아래 링크에서 확인할 수 있습니다.

https://github.com/influxdata/telegraf/blob/release-1.31/plugins/inputs/exec/README.md

 

telegraf/plugins/inputs/exec/README.md at release-1.31 · influxdata/telegraf

Agent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data. - influxdata/telegraf

github.com

 

 

ping plugin을 통해 네트워크 상태 확인하기

Telegraf의 ping 플러그인은 네트워크 연결 상태를 모니터링하기 위해 호스트에 ICMP 패킷을 보내고 응답 시간을 측정합니다. 이 플러그인은 지정된 간격으로 호스트에 핑을 보내어 응답 시간과 성공률을 수집합니다.

[[inputs.ping]]
  interval = "60s"
  urls = ["ip(ex, 210.54.110.56)"]
  count = 10
  ping_interval = 1.0
  timeout = 1.0

 

ping plugin에서 result_code는 아래를 의미합니다.

  • 성공 = 0
  • 해당 호스트 없음 = 1
  • ping 오류 = 2

ping plugin으로 수집한 데이터 조회(kapacitor 화면)

 

https://github.com/influxdata/telegraf/blob/release-1.31/plugins/inputs/ping/README.md

 

telegraf/plugins/inputs/ping/README.md at release-1.31 · influxdata/telegraf

Agent for collecting, processing, aggregating, and writing metrics, logs, and other arbitrary data. - influxdata/telegraf

github.com

 

728x90
반응형