1. Tổng quan.
Telegraf là một agent mã nguồn mở, chuyên dụng trong việc thu thập và gửi dữ liệu về các hệ thống và ứng dụng. Nó hỗ trợ đa dạng các plugin để thu thập dữ liệu từ nhiều nguồn khác nhau như CPU, RAM, đĩa, mạng, và các dịch vụ khác.
Telegraf đóng vai trò là cầu nối giữa hệ thống và cơ sở dữ liệu thời gian (time-series database) như InfluxDB, giúp chúng ta lưu trữ và phân tích dữ liệu một cách hiệu quả.
- Các tính năng chính của Telegraf:
- Thu thập dữ liệu từ nhiều nguồn khác nhau
- Hỗ trợ nhiều loại plugin
- Gửi dữ liệu đến nhiều loại cơ sở dữ liệu
- Cấu hình linh hoạt
- Dễ dàng mở rộng
- Cách thức hoạt động: Giải thích ngắn gọn về quy trình hoạt động của Telegraf, từ việc thu thập dữ liệu đến gửi dữ liệu đến cơ sở dữ liệu.
- Ứng dụng của Telegraf: Nêu ra các ứng dụng phổ biến của Telegraf như giám sát hệ thống, IoT, DevOps, v.v.
2. Cài đặt Telegraf.
Chạy các lệnh sau bằng apt-get để cài đặt Telegraf từ kho lưu trữ InfluxData:
curl --silent --location -O \
https://repos.influxdata.com/influxdata-archive.key \
&& echo "943666881a1b8d9b849b74caebf02d3465d6beb716510d86a39f6c8e8dac7515 influxdata-archive.key" \
| sha256sum -c - && cat influxdata-archive.key \
| gpg --dearmor \
| tee /etc/apt/trusted.gpg.d/influxdata-archive.gpg > /dev/null \
&& echo 'deb [signed-by=/etc/apt/trusted.gpg.d/influxdata-archive.gpg] https://repos.influxdata.com/debian stable main' \
| tee /etc/apt/sources.list.d/influxdata.list
apt-get update && apt-get install telegraf
Đây là cây thư mục lưu config file của Telegraf sau khi cài xong.
shell> tree /etc/telegraf
/etc/telegraf
├── telegraf.conf
├── telegraf.conf.sample
└── telegraf.d
1 directory, 2 files
3. Cấu hình Telegraf đẩy về InfluxDB.
Bạn có thể chỉnh sửa lại file /etc/telegraf/telegraf.conf tham khảo theo mẫu của mình như dưới. Hãy tham khảo bài biết https://wiki.hoanghd.com/tim-hieu-ve-file-cau-hinh-telegraf-de-thu-thap-so-lieu-he-thong/ để xem hiểu rõ hơn về cách config file telegraf.conf.
cat > /etc/telegraf/telegraf.conf << 'OEF'
[global_tags]
[agent]
interval = "60s"
round_interval = true
metric_batch_size = 5000
metric_buffer_limit = 100000
collection_jitter = "0s"
flush_interval = "60s"
flush_jitter = "0s"
precision = ""
debug = true
quiet = false
logfile = "/var/log/telegraf/telegraf.log"
hostname = ""
omit_hostname = false
[[outputs.influxdb]]
urls = ["http://127.0.0.1:8086"]
timeout = "60s"
database = "database-name"
tagexclude = ["hash", "last_update", "status_changed_at", "put_timestamp", "reported_put_timestamp"]
namedrop = ["*-scanner"]
[[inputs.cpu]]
percpu = true
totalcpu = true
collect_cpu_time = false
report_active = false
[[inputs.diskio]]
[[inputs.kernel]]
[[inputs.mem]]
[[inputs.processes]]
[[inputs.system]]
[[inputs.net]]
[[inputs.netstat]]
[[inputs.nstat]]
[[inputs.interrupts]]
[[inputs.linux_sysctl_fs]]
OEF
4. Danh sách các plugin Telegraf hỗ trợ.
Telegraf là một công cụ thu thập dữ liệu rất linh hoạt, hỗ trợ rất nhiều plugin để thu thập dữ liệu từ các nguồn khác nhau. Để biết chính xác các plugin nào được hỗ trợ và cách cấu hình chúng, bạn có thể tham khảo https://docs.influxdata.com/telegraf/v1/plugins/
:
Ví dụ: Giả sử bạn muốn biết thêm về plugin inputs.diskio
để thu thập dữ liệu về đĩa. Bạn có thể thực hiện các bước sau:
- Kiểm tra cấu hình Telegraf: Mở tệp cấu hình của Telegraf (ví dụ:
/etc/telegraf/telegraf.conf
) và tìm phần cấu hình của plugininputs.diskio
. - Tìm kiếm tài liệu: Tìm kiếm trên Google với từ khóa “Telegraf diskio plugin” để tìm các tài liệu hướng dẫn chi tiết hơn.
- Xem mã nguồn: Nếu cần hiểu sâu hơn về cách plugin hoạt động, bạn có thể xem mã nguồn của plugin
inputs.diskio
trên GitHub của Telegraf.
Ví dụ về cấu hình plugin inputs.diskio
:
[[inputs.diskio]]
# Collect stats every 15s
interval = "15s"
Một số plugin phổ biến cho Linux:
- inputs.cpu: Thu thập thông tin về CPU.
- inputs.mem: Thu thập thông tin về bộ nhớ.
- inputs.disk: Thu thập thông tin về đĩa.
- inputs.net: Thu thập thông tin về mạng.
- inputs.system: Thu thập thông tin chung về hệ thống.
- inputs.processes: Thu thập thông tin về các tiến trình đang chạy.
- Và còn rất nhiều plugin khác…
5. Khởi động lại Telegraf sau khi config xong .
Khởi động lại và bật tính năng tự khởi động theo hệ thống cho Telegraf.
systemctl restart telegraf
systemctl enable telegraf
Kiểm tra lại trạng thái Telegraf.
shell> systemctl status telegraf
● telegraf.service - Telegraf
Loaded: loaded (/lib/systemd/system/telegraf.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2024-09-11 04:51:10 UTC; 6s ago
Docs: https://github.com/influxdata/telegraf
Main PID: 4870 (telegraf)
Tasks: 8 (limit: 9389)
Memory: 25.3M
CPU: 172ms
CGroup: /system.slice/telegraf.service
└─4870 /usr/bin/telegraf -config /etc/telegraf/telegraf.conf -config-directory /etc/telegraf/telegraf.d
Sep 11 04:51:10 ubuntu2204 systemd[1]: Starting Telegraf...
Sep 11 04:51:10 ubuntu2204 telegraf[4870]: 2024-09-11T04:51:10Z I! Loading config: /etc/telegraf/telegraf.conf
Sep 11 04:51:10 ubuntu2204 systemd[1]: Started Telegraf.
6. Kiểm tra kết quả.
Bây giờ bạn muốn kiểm tra xem InfluxDB đã nhận được dữ liệu đó chưa thì hãy mở terminal và kết nối với InfluxDB. Nếu chưa kết nối, hãy dùng lệnh influx để kết nối.
shell> influx -precision rfc3339
Connected to http://localhost:8086 version 1.8.10
InfluxDB shell version: 1.8.10
>
Kiểm tra các Databases: hãy dùng lệnh SHOW DATABASES để xem danh sách các cơ sở dữ liệu.
shell> influx -precision rfc3339
Connected to http://localhost:8086 version 1.8.10
InfluxDB shell version: 1.8.10
> SHOW DATABASES
name: databases
name
----
_internal
mydb
database-name
Chọn cơ sở dữ liệu: Sử dụng USE database-name (thay thế “database-name” bằng tên cơ sở dữ liệu bạn đã cấu hình trong Telegraf).
> use database-name
Using database database-name
Xem danh sách các measurement trong InfluxDB: SHOW MEASUREMENTS để xem danh sách các loại dữ liệu.
> SHOW MEASUREMENTS
name: measurements
name
----
cpu
disk
diskio
interrupts
kernel
linux_sysctl_fs
mem
net
netstat
nstat
processes
soft_interrupts
system
Truy vấn dữ liệu: SELECT * FROM “cpu” (thay thế “cpu” bằng tên loại dữ liệu bạn muốn xem).
> SELECT * FROM "cpu"
name: cpu
time cpu host usage_guest usage_guest_nice usage_idle usage_iowait usage_irq usage_nice usage_softirq usage_steal usage_system usage_user
---- --- ---- ----------- ---------------- ---------- ------------ --------- ---------- ------------- ----------- ------------ ----------
2024-09-11T04:48:00Z cpu-total ubuntu2204 0 0 99.90404272184924 0.004172055571780828 0 0 0.004172055571780087 0 0.05006466686136104 0.03754850014602004
2024-09-11T04:48:00Z cpu0 ubuntu2204 0 0 99.89983305509115 0 0 0 0 0 0.050083472454088625 0.050083472454091595
2024-09-11T04:48:00Z cpu1 ubuntu2204 0 0 99.91659716430328 0 0 0 0 0 0.06672226855713463 0.01668056713928514
2024-09-11T04:48:00Z cpu2 ubuntu2204 0 0 99.9165414788847 0 0 0 0 0 0.016691704223000852 0.06676681689200341
2024-09-11T04:48:00Z cpu3 ubuntu2204 0 0 99.93322203672794 0.016694490818029543 0 0 0 0 0.050083472454088625 0
2024-09-11T04:49:00Z cpu-total ubuntu2204 0 0 99.90824540184295 0 0 0 0 0 0.04170663552571266 0.050047962630856375
2024-09-11T04:49:00Z cpu0 ubuntu2204 0 0 99.79979979979998 0 0 0 0.01668335001668329 0 0.1001001001001016 0.08341675008341552
2024-09-11T04:49:00Z cpu1 ubuntu2204 0 0 99.96664442961902 0 0 0 0 0 0.016677785190123424 0.016677785190129347
2024-09-11T04:49:00Z cpu2 ubuntu2204 0 0 99.8832165498837 0 0 0 0 0 0.05005005005005228 0.0667334000667354
2024-09-11T04:49:00Z cpu3 ubuntu2204 0 0 99.93327773144293 0 0 0 0 0 0.01668056713928243 0.050041701417850255
2024-09-11T04:50:00Z cpu-total ubuntu2204 0 0 99.94577006507701 0.004171533455697528 0 0 0.0041715334556984545 0 0.025029200734191095 0.020857667278490602
2024-09-11T04:50:00Z cpu0 ubuntu2204 0 0 99.94994159853205 0 0 0 0 0 0.016686133822792822 0.03337226764558861
2024-09-11T04:50:00Z cpu1 ubuntu2204 0 0 99.98332221481103 0 0 0 0 0 0 0.016677785190123674
2024-09-11T04:50:00Z cpu2 ubuntu2204 0 0 99.91658324991629 0.016683350016682853 0 0 0.016683350016683224 0 0.05005005005004856 0
2024-09-11T04:50:00Z cpu3 ubuntu2204 0 0 99.91651360828155 0 0 0 0.016697278343629912 0 0.03339455668725908 0.03339455668725908
2024-09-11T04:53:00Z cpu-total ubuntu2204 0 0 99.94576780276125 0.004171707479872115 0 0 0 0 0.020858537399359094 0.02920195235910036
2024-09-11T04:53:00Z cpu0 ubuntu2204 0 0 99.89988319706258 0 0 0 0 0 0.03337226764558861 0.06674453529117129
2024-09-11T04:53:00Z cpu1 ubuntu2204 0 0 99.96664999166329 0 0 0 0 0 0.016675004168753577 0.016675004168747655
2024-09-11T04:53:00Z cpu2 ubuntu2204 0 0 99.98330272165752 0 0 0 0 0 0 0.016697278343629794
2024-09-11T04:53:00Z cpu3 ubuntu2204 0 0 99.94993324432619 0 0 0 0 0 0.016688918558080024 0.03337783711615412
2024-09-11T04:54:00Z cpu-total ubuntu2204 0 0 99.92074747643335 0 0 0 0 0 0.020855927254524727 0.05839659631267279
2024-09-11T04:54:00Z cpu0 ubuntu2204 0 0 99.84989993328861 0 0 0 0 0 0.050033355570379155 0.10006671114076128
2024-09-11T04:54:00Z cpu1 ubuntu2204 0 0 99.96664442961902 0 0 0 0 0 0.016677785190123424 0.016677785190129347
2024-09-11T04:54:00Z cpu2 ubuntu2204 0 0 99.96661659155328 0 0 0 0 0 0.01669170422300382 0.016691704223000852
2024-09-11T04:54:00Z cpu3 ubuntu2204 0 0 99.8664886515355 0 0 0 0 0 0.03337783711615412 0.10013351134846533
2024-09-11T04:55:00Z cpu-total ubuntu2204 0 0 99.92910167653756 0 0 0 0.004170489615480789 0 0.029193427308366264 0.03753440653932636
2024-09-11T04:55:00Z cpu0 ubuntu2204 0 0 100.00000000000152 0 0 0 0 0 0 0
2024-09-11T04:55:00Z cpu1 ubuntu2204 0 0 99.96659428762398 0 0 0 0 0 0.01670285618841086 0.01670285618841086
2024-09-11T04:55:00Z cpu2 ubuntu2204 0 0 99.96664999166329 0 0 0 0 0 0 0.03335000833750123
2024-09-11T04:55:00Z cpu3 ubuntu2204 0 0 99.81654436290763 0 0 0 0 0 0.08338892595063192 0.10006671114076128
2024-09-11T04:56:00Z cpu-total ubuntu2204 0 0 99.91241971807527 0 0 0 0 0 0.05004587538576947 0.037534406539329324
2024-09-11T04:56:00Z cpu0 ubuntu2204 0 0 99.96666111018278 0 0 0 0 0 0.01666944490748378 0.01666944490748378
2024-09-11T04:56:00Z cpu1 ubuntu2204 0 0 99.8498498498496 0 0 0 0 0 0.08341675008341723 0.06673340006673141
2024-09-11T04:56:00Z cpu2 ubuntu2204 0 0 99.98331386617684 0 0 0 0 0 0.016686133822792822 0
2024-09-11T04:56:00Z cpu3 ubuntu2204 0 0 99.84979973297706 0 0 0 0 0 0.08344459279038827 0.06675567423230824
2024-09-11T04:57:00Z cpu-total ubuntu2204 0 0 99.9290957624268 0.004170837504169846 0 0 0 0 0.04587921254587719 0.02085418752085219
2024-09-11T04:57:00Z cpu0 ubuntu2204 0 0 99.96663886572374 0 0 0 0 0 0.016680567139282683 0.016680567139282683
2024-09-11T04:57:00Z cpu1 ubuntu2204 0 0 99.93326659993181 0 0 0 0 0 0.06673340006673141 0
2024-09-11T04:57:00Z cpu2 ubuntu2204 0 0 99.94994994994886 0 0 0 0 0 0.016683350016682853 0.033366700033365705
2024-09-11T04:57:00Z cpu3 ubuntu2204 0 0 99.88319706324093 0.016686133822792822 0 0 0 0 0.06674453529117129 0.033372267645585645
>
Kiểm tra kết quả: Nếu có dữ liệu hiện ra, nghĩa là Telegraf đã gửi dữ liệu đến InfluxDB thành công.
7. Log trong Telegraf.
Bạn có thể theo dõi logs của Telegraf ở file /var/log/telegraf/telegraf.log
.
shell> tail -f /var/log/telegraf/telegraf.log
2024-09-11T06:24:15Z I! Loaded secretstores:
2024-09-11T06:24:15Z I! Loaded outputs: influxdb
2024-09-11T06:24:15Z I! Tags enabled: host=ubuntu2204
2024-09-11T06:24:15Z I! [agent] Config: Interval:1m0s, Quiet:false, Hostname:"ubuntu2204", Flush Interval:1m0s
2024-09-11T06:24:15Z D! [agent] Initializing plugins
2024-09-11T06:24:15Z W! DeprecationWarning: Value "false" for option "ignore_protocol_stats" of plugin "inputs.net" deprecated since version 1.27.3 and will be removed in 1.36.0: use the 'inputs.nstat' plugin instead for protocol stats
2024-09-11T06:24:15Z D! [agent] Connecting outputs
2024-09-11T06:24:15Z D! [agent] Attempting connection to [outputs.influxdb]
2024-09-11T06:24:15Z D! [agent] Successfully connected to outputs.influxdb
2024-09-11T06:24:15Z D! [agent] Starting service inputs
2024-09-11T06:25:15Z D! [outputs.influxdb] Wrote batch of 108 metrics in 6.003438ms
2024-09-11T06:25:15Z D! [outputs.influxdb] Buffer fullness: 0 / 100000 metrics
Nhìn chung, log này cho thấy Telegraf đã khởi động, kết nối với InfluxDB và đang hoạt động bình thường, ngoại trừ cảnh báo về tùy chọn lỗi thời. Bạn có thể xem xét cập nhật cấu hình Telegraf để sử dụng plugin inputs.nstat
thay thế cho inputs.net
với tùy chọn ignore_protocol_stats
.
Khởi động Telegraf thành công:
- Các dòng đầu tiên cho thấy Telegraf đã khởi động thành công, nạp các thông tin cần thiết và kết nối với InfluxDB.
I! Loaded secretstores:
– Telegraf đã nạp các kho lưu trữ bí mật (nếu có).I! Loaded outputs: influxdb
– Telegraf đã nạp cấu hình đầu ra cho InfluxDB.I! Tags enabled: host=ubuntu2204
– Telegraf đã kích hoạt tag “host” với giá trị “ubuntu2204”.D! [agent] Connecting outputs
– Telegraf đang kết nối với các đầu ra đã cấu hình.D! [agent] Successfully connected to outputs.influxdb
– Telegraf đã kết nối thành công với InfluxDB.
Cảnh báo về tính năng lỗi thời:
- Dòng
W! DeprecationWarning: Value "false" for option "ignore_protocol_stats" of plugin "inputs.net" deprecated since version 1.27.3 and will be removed in 1.36.0: use the 'inputs.nstat' plugin instead for protocol stats
cảnh báo về việc sử dụng một tùy chọn lỗi thời trong plugininputs.net
. Telegraf khuyến nghị sử dụng plugininputs.nstat
thay thế để thu thập dữ liệu thống kê giao thức mạng.
Hoạt động bình thường:
- Dòng
D! [agent] Starting service inputs
cho biết Telegraf đã bắt đầu thu thập dữ liệu từ các plugin. - Các dòng
D! [outputs.influxdb] Wrote batch of 108 metrics in 6.003438ms
vàD! [outputs.influxdb] Buffer fullness: 0 / 100000 metrics
cho thấy Telegraf đang ghi một loạt 108 số liệu vào InfluxDB mỗi 1 phút (interval: 1m0s) và buffer ghi chưa đầy.
8. Kết luận.
Telegraf đã chứng minh được vai trò quan trọng của mình trong việc thu thập và gửi dữ liệu hệ thống. Với khả năng tương thích cao, cấu hình linh hoạt và cộng đồng hỗ trợ lớn, Telegraf là một công cụ không thể thiếu cho những ai muốn xây dựng một hệ thống giám sát hiệu quả. Tuy nhiên, để khai thác hết tiềm năng của Telegraf, người dùng cần dành thời gian tìm hiểu và thực hành.