telegraf采集监控数据组件

一. telegraf 介绍

github托管链接: https://github.com/influxdata/telegraf/tree/master/plugins

支持多种平台监控扩展性强

image-20230525094014181

image-20230525100058719

监控交换机等数通设备时mibs文件映射见leancould

mibs下载链接:
http://lc-j2rHZR7P.cn-e1.lcfile.com/qP4oqwLcYwP7UPcDlvlV6IMOxyQwBY6u/mibs.zip

image-20230612214348411

二. telegraf部署 ( 建议采用容器化的方式部署 )

1. 二进制部署 ( 比较简单了解即可 )

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/bin/bash
set -e
version=1.20.4
tarball=telegraf-${version}_linux_amd64.tar.gz
wget https://dl.influxdata.com/telegraf/releases/$tarball
tar xzvf $tarball

mkdir -p /opt/telegraf
cp -far telegraf-${version}/usr/bin/telegraf /opt/telegraf

cat <<EOF > /opt/telegraf/telegraf.conf
[global_tags]
[agent]
interval = "10s"
flush_interval = "10s"
round_interval = true
metric_batch_size = 1000
metric_buffer_limit = 10000
collection_jitter = "0s"
flush_jitter = "0s"
precision = ""
hostname = "" # 填为自己的服务器IP
omit_hostname = false

[[inputs.cpu]]
percpu = true
totalcpu = true
collect_cpu_time = false
report_active = true
[[inputs.disk]]
ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]
[[inputs.diskio]]
[[inputs.kernel]]
[[inputs.mem]]
[[inputs.processes]]
[[inputs.system]]
fielddrop = ["uptime_format"]
[[inputs.net]]
ignore_protocol_stats = true

[[outputs.prometheus_client]]
listen = ":9273"
metric_version = 2
path="/metrics"
string_as_label = true
export_timestamp = true

EOF

cat <<EOF > /etc/systemd/system/telegraf.service
[Unit]
Description="telegraf"
After=network.target

[Service]
Type=simple

ExecStart=/opt/telegraf/telegraf --config telegraf.conf
WorkingDirectory=/opt/telegraf
SuccessExitStatus=0
LimitNOFILE=65536
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=telegraf
KillMode=process
KillSignal=SIGQUIT
TimeoutStopSec=5
Restart=always

[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable telegraf
systemctl restart telegraf
systemctl status telegraf

2. 容器化部署

( 此处镜像选择zznn阿里云私有镜像 集成oracle客户端 以及python环境 方便使用telegrafexec模块启用脚本监控 )

部署脚本(docker-compose.yml)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
version: "3.0"
services:
telegraf-py: #采集工具一个
image: registry.cn-hangzhou.aliyuncs.com/zznn/mycentos:telegraf_oracle-py
restart: always
container_name: telegraf-py
hostname: telegraf
environment:
TZ: Asia/Shanghai
ports:
- 9273:9273
volumes:
- ./telegraf.conf:/opt/telegraf-1.20.4/etc/telegraf/telegraf.conf
# - ./telegraf/telegraf.d/:/etc/telegraf/telegraf.d/
# - ./telegraf/mibs/:/usr/share/snmp/mibs/
# - ./telegraf/etc:/etc/snmp/
command: /opt/telegraf-1.20.4/usr/bin/telegraf --config /opt/telegraf-1.20.4/etc/telegraf/telegraf.conf --config-directory /opt/telegraf-1.20.4/etc/telegraf/telegraf.d
networks:
- tpng

# 下方为普罗米修斯见下篇 (prometheus influxdb选其一)
prometheus:
image: prom/prometheus:latest
restart: always
container_name: prometheus
hostname: prometheus
environment:
TZ: Asia/Shanghai
ports:
- 9090:9090
user: root
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
- ./data/monitor/prometheus:/prometheus/data:rw
#- /data/monitor/prometheus:/prometheus/data:rw
command:
- "--config.file=/etc/prometheus/prometheus.yml"
- "--storage.tsdb.path=/prometheus"
- "--storage.tsdb.retention.time=15d"
#- "--web.console.libraries=/usr/share/prometheus/console_libraries"
#- "--web.console.templates=/usr/share/prometheus/consoles"
#- "--enable-feature=remote-write-receiver"
#- "--query.lookback-delta=2m"
networks:
- tpng

influxdb:
image: tutum/influxdb
# registry.cn-hangzhou.aliyuncs.com/zznn/mycentos:tutum-influxdb
container_name: influx
# environment:
# - INFLUXDB_ADMIN_ENABLED:"true"
ports:
- "8083:8083"
- "8086:8086"
expose:
- 8090
- 8099
# volumes:
# - influxdb-storage:/var/lib/influxdb
networks:
- tpng

grafana:
image: grafana/grafana:7.0.4 #低版本8.3.3
# 阿里云:registry.cn-hangzhou.aliyuncs.com/zznn/mycentos:grafana7.0.4
container_name: grafana
hostname: grafana
restart: unless-stopped
ports:
- 3000:3000
user: root
volumes:
#- grafana-storage:/var/lib/grafana
- ./grafana.ini:/etc/grafana/grafana.ini
- ./data/monitor/grafana:/var/lib/grafana:rw
environment:
GF_SECURITY_ADMIN_PASSWORD: "admin"
GF_USERS_ALLOW_SIGN_UP: "false"
TZ: Asia/Shanghai
GF_RENDERING_SERVER_URL: http://renderer:8081/render
GF_RENDERING_CALLBACK_URL: http://grafana:3000/
GF_LOG_FILTERS: rendering:debug
networks:
- tpng

renderer:
image: grafana/grafana-image-renderer:2.0.0
# 阿里云:registry.cn-hangzhou.aliyuncs.com/zznn/mycentos:grafana-image-renderer2.0.0
restart: always
ports:
- "8081:8081"
environment:
- GF_RENDERER_PLUGIN_TZ=Asia/Shanghai
- GF_RENDERER_PLUGIN_IGNORE_HTTPS_ERRORS=true
networks:
- tpng

networks:
tpng:
driver: bridge

telegraf-py版功能

image-20230525095815596

具体监控方案见下篇。