目录
1 概述
2 功能
2.1 不同操作系统采集端
2.2 linux操作系统采集端
2.3 监控指标
2.4 参数定义
2.4.1 默认启用的参数
2.4.2 默认不启用的参数
2.5 启动参数
3 安装部署
3.1 下载
3.2 安装配置
3.3 测试验证
3.4 prometheus配置
3.5 在 grafana 中添加图表
1 概述
Exporter是Prometheus的指标数据收集组件。它负责从目标Jobs收集数据,并把收集到的数据转换为Prometheus支持的时序数据格式。 和传统的指标数据收集组件不同的是,他只负责收集,并不向Server端发送数据,而是等待Prometheus Server 主动抓取,node-exporter 默认的抓取url地址:http://ip:9100/metrics 。
因为环境原因,网络不可达的场景,Prometheus可以使用Pushgateway这个组件推送node-exporter的指标数据到远端Prometheus,node-exporter用于采集node的运行指标,包括node的cpu、load、filesystem、meminfo、network等基础监控指标,类似于zabbix监控系统的的zabbix-agent。node-exporter由Prometheus官方提供、维护,属于监控指标收集类UNIX内核操作系统的必备的exporter。
GitHub地址:https://github.com/prometheus/node_exporter#enabled-by-default。
2 功能
2.1 不同操作系统采集端
- node-exporter用于采集类UNIX内核的硬件以及系统指标
- Windows系统使用 WMI-exporter
- 采集NVIDIA的GPU指标,可以使用 prometheus-dcgm
2.2 linux操作系统采集端
根据不同的类UNIX操作系统,node-exporter采集指标的支持也是不一样的。
- diskstats 支持 Darwin, Linux
- cpu 支持 Darwin, Dragonfly, FreeBSD, Linux, Solaris等,
2.3 监控指标
- CPU
- 内存
- 硬盘
- 网络流量
- 文件描述符
- 系统负载
- 系统服务
2.4 参数定义
黑名单: 关闭某一项默认开启的采集项,使用--no-collector参数可指定不需要的模块,如果不指定,将使用默认配置。
白名单:关闭默认采集项而只开启某些采集,使用--collector.disable-defaults参数关闭默认采集项,使用--collector.<name>指定开启的采集项。
使用--collectors.enabled参数打开node_exporter默认的采集项。
部分参数默认关闭的原因是:
-
太重
-
太慢
-
太多资源开销
2.4.1 默认启用的参数
Name | Description | OS |
arp | 从/proc/net/ARP中显示ARP统计信息 | Linux |
bcache | 显示/sys/fs/bcache/中的bcache统计信息。 | Linux |
bonding | 显示Linux绑定接口的已配置和活动从属设备的数量。 | LInux |
boottime | 显示从kern.boottime sysctl派生的系统启动时间 | Darwin, Dragonfly, FreeBSD, NetBSD, OpenBSD, Solaris |
conntrack | 显示连接统计信息(如果没有/proc/sys/net/netfilter/present,则不执行任何操作)。 | Linux |
cpu | 显示CPU统计信息 | Darwin, Dragonfly, FreeBSD, Linux, Solaris |
cpufreq | 显示CPU频率统计信息 | Linux, Solaris |
diskstats | 显示磁盘I/O统计信息。 | Darwin, Linux, OpenBSD |
edac | 显示错误检测和更正统计信息。 | Linux |
entropy | 显示可用熵。 | Linux |
exec | 显示执行统计信息。 | Dragonfly, FreeBSD |
filefd | 显示/proc/sys/fs/file-nr中的文件描述符统计信息。 | Linux |
filesystem | 显示文件系统统计信息,如使用的磁盘空间。 | Darwin, Dragonfly, FreeBSD, Linux, OpenBSD |
hwmon | 暴露/sys/class/hwmon/中的硬件监控和传感器数据。 | Linux |
infiniband | 显示特定于InfiniBand和Intel OmniPath配置的网络统计信息。 | Linux |
ipvs | 显示/proc/net/ip_vs中的IPVS状态和/proc/net/ip_vs_stats中的统计信息。 | Linux |
loadavg | 显示平均负载。 | Darwin, Dragonfly, FreeBSD, Linux, NetBSD, OpenBSD, Solaris |
mdadm | 在/proc/mdstat中显示有关设备的统计信息(如果不存在/proc/mdtat,则不执行任何操作)。 | Linux |
meminfo | 显示内存统计信息。 | Darwin, Dragonfly, FreeBSD, Linux, OpenBSD |
netclass | 显示/sys/class/net中的网络接口信息/ | Linux |
netdev | 显示网络接口统计信息,如传输的字节数。 | Darwin, Dragonfly, FreeBSD, Linux, OpenBSD |
netstat | 从/proc/net/netstat中显示网络统计信息。这是与netstat-s相同的信息。 | Linux |
nfs | 从/proc/net/rpc/NFS中显示NFS客户端统计信息。这是与nfsstat-c相同的信息。 | Linux |
nfsd | 从/proc/net/rpc/nfsd中显示NFS内核服务器统计信息。这与nfsstat-s的信息相同。 | Linux |
pressure | 显示/proc/pressure/中的压力失速统计信息。 | Linux (kernel 4.20+ and/or CONFIG_PSI) |
rapl | 显示/sys/class/powercap中的各种统计信息。 | Linux |
schedstat | 显示/proc/schedstat中的任务调度程序统计信息。 | Linux |
sockstat | 显示/proc/net/sockstat中的各种统计信息。 | Linux |
softnet | 显示/proc/net/softnet_stat中的统计信息 | Linux |
stat | 显示/proc/stat中的各种统计信息。这包括启动时间、分叉和中断。 | Linux |
textfile | 显示从本地磁盘读取的统计信息。必须设置--collector.textfile.directory标志。 | any |
thermal_zone | 显示/sys/class/thermal中的热区和冷却设备统计信息。 | Linux |
time | 显示当前系统时间。 | any |
timex | 显示选定的adjtimex(2)系统调用统计信息 | Linux |
udp_queues | 显示/proc/net/UDP和/proc/net/udp6中rx_queue和tx_queue的UDP总长度。 | Linux |
uname | 显示uname系统调用提供的系统信息。 | Linux |
vmstat | 显示/proc/vmstat中的统计信息。 | Linux |
xfs | 显示XFS运行时统计信息。 | Linux (kernel 4.4+) |
zfs | 显示ZFS性能统计信息。 | Linux, Solaris |
如果不想收集某个类型的指标,就使用--no-collector.<name>
参数,比如:
./node_exporter --no-collector.time
2.4.2 默认不启用的参数
默认不启用的参数需要通过--collector.<name>
参数来启用,官方提供的不启用的参数如下:
Name | Description | OS |
buddyinfo | 显示/proc/buddyinfo报告的内存碎片统计信息。 | Linux |
devstat | 显示设备统计信息 | Dragonfly, FreeBSD |
drbd | 显示分布式复制数据块设备统计信息(至8.4版) | LInux |
interrupts | 显示详细的中断统计信息 | Linux, OpenBSD |
ksmd | 从/sys/kernel/mm/ksm中显示内核和系统统计信息。 | Linux |
logind | 显示登录名中的会话计数。 | Linux |
meminfo_numa | 从logind中显示会话计数。从/proc/meminfo_numa中显示内存统计信息。 | Linux |
mountstats | 从/proc/self/mountstats中显示文件系统统计信息。显示详细的NFS客户端统计信息。 | Linux |
ntp | 显示本地NTP守护程序运行状况以检查时间 | any |
processes | 显示/proc中的聚合进程统计信息 | Linux |
qdisc | 显示排队规则统计信息 | Linux |
runit | 显示排队规则统计信息从runit中显示服务状态。 | any |
supervisord | 从supervisord中显示服务状态 | any |
systemd | 从systemd中显示服务和系统状态。 | Linux |
tcpstat | 从/proc/net/TCP和/proc/net/trcp6中显示TCP连接状态信息。(警告:当前版本在高负载情况下可能存在性能问题。) | Linux |
wifi | 显示WiFi设备和站点统计信息。 | Linux |
perf | 显示基于性能的指标(警告:指标取决于内核配置和设置)。 | Linux |
2.5 启动参数
- --web.listen-address:指定启动端口,例如:--web.listen-address=":8080"。
--web.config.file=web-config.yml:指定配置文件。
- --collector.systemd:收集主机上面运行服务的状态,启用systemd收集器。
- --collector.systemd.unit-include="(docker|sshd).service":指定systemd服务,与--collector.systemd搭配使用。
- –collector.vmstat.fields=^(oom_kill|pgpg|pswp|nr|pg.fault):监控系统事件。
- --collector.disable-defaults:禁用所有默认开启的收集器。
- --collector.< name>:指定开启的收集器,与--collector.disable-defaults搭配使用。
- --collector.textfile.directory="/opt/prom":自定义监控数据目录。
- --web.telemetry-path="/metrics":指定metrics的路径,默认为/metrics。
- --web.disable-exporter-metrics:是否禁用go、prome默认的metrics。
- --web.max-requests=40:最大并行请求数,默认40,设置为0时不限制。
- --log.level="info":日志等级: [debug, info, warn, error, fatal]。
- --log.format=logfmt :设置日志打印target和格式: [logfmt, json]。
- --version:版本号
3 安装部署
3.1 下载
下载地址:
https://prometheus.io/download/
3.2 安装配置
tar -zxvf node_exporter-0.18.1.linux-amd64.tar.gz
cp -rf node_exporter-0.18.1.linux-amd64 /usr/local/node_exporter
#启动
cd /usr/local/node_exporter/
nohup ./node_exporter --web.listen-address="192.168.10.131:9100" --log.level=warn &
#要想后台运行就得加nohup,单独加最后面的&都不管用
3.3 测试验证
curl -g -X GET http://192.168.10.131:9100/metrics?collect[]=cpu
go_代表goruntime信息等
curl http://192.168.10.131:9100/metrics|grep go_
process_代表进程信息等
curl http://192.168.10.131:9100/metrics|grep process
3.4 prometheus配置
- job_name: node_exporter
honor_timestamps: true
scrape_interval: 5s
scrape_timeout: 5s
metrics_path: /metrics
scheme: http
follow_redirects: true
static_configs:
- targets:
- 192.168.10.131:9100
params: ##配置比较鸡肋,可以从node_exporter端过率
collect[]: #node_exporter可以传递一个可选的收集器列表来过滤指标。该collect[]参数可以多次使用。
- cpu
- meminfo
重启 prometheus,查看状态
基于发现配置prometheus
在prometheus 主配置文件配置定义子配置文件路径
- job_name: 'node' static_configs: file_sd_configs: - files: - metrics/node_exporter*.yaml refresh_interval: 2m
在prometheus安装目录下的targets目录下(在主配置文件定义metrics目录不存在则手动创建)创建文件 node_exporter65.yaml。
- targets: ['192.168.111.65:9100'] # 如果有多个node_exporter,配置到[]中,隔开添加不需要重启服务,服务自动发现node_exporter客户端
labels:
app: node-exporter
job: node
3.5 在 grafana 中添加图表
1)开启alertmanager配置告警规则
prometheus 主配置文件配置定义子配置文件路径
rule_files:
- "rules/*.yml"
2)prometheus 告警规则文章来源:https://www.toymoban.com/news/detail-435269.html
在prometheus安装目录下的定义的rules目录下(如果rules目录不存在)创建文件 alarm_rule.yml,文章来源地址https://www.toymoban.com/news/detail-435269.html
groups:
- name: hostStatsAlert
rules:
- alert: hostCpuUsageAlert
expr: (1- avg(irate(node_cpu_seconds_total{instance=~"$node",mode="idle"}[30m])))*100>85
for: 1m
labels:
level: disaster #定义一个等级标签,用于altermanager 发送消息
annotations:
summary: "实例 {{ $labels.instance }} CPU使用率过高"
description: "{{ $labels.instance }} CPU 使用率大于 85% (当前值为: {{ $value }})"
- alert: hostMemUsageAlert
expr: (1 - (node_memory_MemAvailable_bytes / (node_memory_MemTotal_bytes)))* 100>85
for: 1m
labels:
level: disaster
annotations:
summary: "实例 {{ $labels.instance }} 内存使用率过高"
description: "{{ $labels.instance }} 内存使用率大于 85% (当前的值: {{ $value }})"
- alert: hostLoad
expr: sum(node_load15) >= sum(count(node_cpu_seconds_total{mode='system'}) by (cpu)) and node_load1 > node_load5 and node_load5 > node_load15
for: 1m
labels:
level: disaster
annotations:
summary: "实例 {{ $labels.instance }} 15 分钟负载过高"
description: "{{ $labels.instance }} 15 分钟负载大于其 cpu 核心数 (当前的值: {{ $value }})"
- alert: hostUp
expr: up{job="node"} == 0
for: 1m
labels:
level: disaster
annotations:
summary: "实例 {{ $labels.instance }} 不可达"
description: "{{ $labels.instance }} 实例不可达,请尽快解决"
到了这里,关于Prometheus监控实战之node_exporter详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!