Telegraf를 통한 다양한 데이터 수집 및 설정 방법
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 설치는 넘어가고 제대로 데이터가 쌓이고 있는지 확인해보겠습니다.

위의 설정에서 입력한 user와 cpu 옵션인 cpu-total 값이 제대로 쌓이고 있는 것을 확인할 수 있습니다. 물론 아래와 같이 influxdb에 직접 접근해서 쿼리를 통해 확인할 수 있습니다.
(kapacitor를 사용하면 쿼리도 만들어주고 다양한 형태의 그래프나 표로 확인할 수 있어 편리합니다 🙂)

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에 프로세스 개수가 잘 쌓이는 것을 확인할 수 있습니다.

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

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