为监控服务器CPU、内存、磁盘、I/O等信息,需要node_exporter,作用是用于机器系统数据收集。
1 下载安装node_exporter
wget https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gz
tar -xf node_exporter-1.2.2.linux-amd64.tar.gz
cd node_exporter-1.2.2.linux-amd64/
mv node_exporter /usr/local/bin/
2 添加启动用户
useradd prometheus -s /sbin/nologin -M
3 配置启动服务
cat << EOF>/usr/lib/systemd/system/node_exporter.service
[Unit]
Description=node_export
Documentation=https://github.com/prometheus/node_exporter
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/usr/local/bin/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
4 启动node-exporter
systemctl daemon-reload
systemctl start node_exporter.service
systemctl enable node_exporter.service
5 配置prometheus收集
- job_name: 'node'
static_configs:
- targets: ['192.168.160.23:9090']
重启
./promtool check config prometheus.yml
Checking prometheus.yml
SUCCESS: 0 rule files found
[root@prometheus-server prometheus]# ps -ef|grep prometheus
root 873 1 0 8月13 ? 00:00:51 /usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/data/
root 4017 3725 0 12:38 pts/0 00:00:00 grep --color=auto prometheus
[root@prometheus-server prometheus]# kill -hup 873
6 node_exporter收集设置
功能对照表
默认开启的功能
名称 |
说明 |
系统 |
arp |
从 /proc/net/arp 中收集 ARP 统计信息 |
Linux |
conntrack |
从 /proc/sys/net/netfilter/ 中收集 conntrack 统计信息 |
Linux |
cpu |
收集 cpu 统计信息 |
Darwin, Dragonfly,FreeBSD, Linux |
diskstats |
从 /proc/diskstats 中收集磁盘 I/O 统计信息 |
Linux |
edac |
错误检测与纠正统计信息 |
Linux |
entropy |
可用内核熵信息 |
Linux |
exec |
execution 统计信息 |
Dragonfly, FreeBSD |
filefd |
从 /proc/sys/fs/file-nr 中收集文件描述符统计信息 |
Linux |
filesystem |
文件系统统计信息,例如磁盘已使用空间 |
Darwin, Dragonfly,FreeBSD, Linux, OpenBSD |
hwmon |
从 /sys/class/hwmon/ 中收集监控器或传感器数据信息 |
Linux |
infiniband |
从 InfiniBand 配置中收集网络统计信息 |
Linux |
loadavg |
收集系统负载信息 |
Darwin, Dragonfly, FreeBSD,Linux, NetBSD, OpenBSD, Solaris |
mdadm |
从 /proc/mdstat 中获取设备统计信息 |
Linux |
meminfo |
内存统计信息 |
Darwin, Dragonfly,FreeBSD, Linux |
netdev |
网口流量统计信息,单位 bytes |
Darwin, Dragonfly,FreeBSD, Linux, OpenBSD |
netstat |
从 /proc/net/netstat 收集网络统计数据,等同于 netstat -s |
Linux |
sockstat |
从 /proc/net/sockstat 中收集 socket 统计信息 |
Linux |
stat |
从 /proc/stat 中收集各种统计信息,包含系统启动时间,forks, 中断等 |
Linux |
textfile |
通过 --collector.textfile.directory参数指定本地文本收集路径,收集文本信息 |
any |
time |
系统当前时间 |
any |
uname |
通过 uname 系统调用, 获取系统信息 |
any |
vmstat |
从 /proc/vmstat 中收集统计信息 |
Linux |
wifi |
收集 wifi 设备相关统计数据 |
Linux |
xfs |
收集 xfs 运行时统计信息 |
Linux (kernel 4.4+) |
zfs |
收集 zfs 性能统计信息 |
Linux |
默认关闭的功能
名称 |
说明 |
系统 |
bonding |
收集系统配置以及激活的绑定网卡数量 |
Linux |
buddyinfo |
从 /proc/buddyinfo 中收集内存碎片统计信息 |
Linux |
devstat |
收集设备统计信息 |
Dragonfly, FreeBSD |
drbd |
收集远程镜像块设备(DRBD)统计信息 |
Linux |
interrupts |
收集更具体的中断统计信息 |
Linux,OpenBSD |
ipvs |
从 /proc/net/ip_vs 中收集 IPVS 状态信息,从/proc/net/ip_vs_stats 获取统计信息 |
Linux |
ksmd |
从 /sys/kernel/mm/ksm 中获取内核和系统统计信 |
Linux |
logind |
从 logind 中收集会话统计信息 |
Linux |
meminfo_numa |
从 /proc/meminfo_numa 中收集内存统计信 |
Linux |
mountstats |
从 /proc/self/mountstat 中收集文件系统统计信息,包括 NFS 客户端统计信息 |
Linux |
nfs |
从 /proc/net/rpc/nfs 中收集 NFS 统计信息,等同于 nfsstat -c |
Linux |
qdisc |
收集队列推定统计信息 |
Linux |
runit |
收集 runit 状态信息 |
any |
supervisord |
收集 supervisord 状态信息 |
any |
systemd |
从 systemd 中收集设备系统状态信息 |
Linux |
tcpstat |
从 /proc/net/tcp 和 /proc/net/tcp6 收集 TCP 连接状态信息 |
Linux |
注意:我们可以使用 --collectors.enabled 运行参数指定 node_exporter 收集的功能模块, 如果不指定,将使用默认模块。
例子:监控sshd
vim /usr/lib/systemd/system/node_exporter.service
/usr/local/bin/node_exporter ExecStart=/usr/local/bin/node_exporter --collector.systemd --collector.systemd.unit-whitelist=(sshd|docker).service
systemctl daemon-reload
systemctl restart node_exporter.service
[root@grafana ~]# ps -ef|grep node_exporter
prometh+ 2272 1 0 13:36 ? 00:00:00 /usr/local/bin/node_exporter --collector.systemd --collector.systemd.unit-whitelist=(sshd|docker).service
7 node exporter 常用查询语句
1.磁盘剩余容量
100 - ((node_filesystem_avail_bytes{job="node",mountpoint=~".*",fstype=~"ext4|xfs|ext2|ext3"} * 100) / node_filesystem_size_bytes {job="node",mountpoint=~".*",fstype=~"ext4|xfs|ext2|ext3"})
2.内存剩余容量
100 - ((node_memory_MemTotal_bytes - node_memory_MemFree_bytes - node_memory_Buffers_bytes - node_memory_Cached_bytes) / (node_memory_MemTotal_bytes )) * 100
3.cpu使用率
100 - ((avg by (instance,job,env)(irate(node_cpu_seconds_total{mode="idle"}[30s]))) *100)
8 grafana图表展示
node模版9276
模版展示如下