目錄
1 概述
2 功能
2.1 不同操作系統(tǒng)采集端
2.2?linux操作系統(tǒng)采集端
2.3 監(jiān)控指標
2.4 參數(shù)定義
2.4.1?默認啟用的參數(shù)
?2.4.2?默認不啟用的參數(shù)
2.5 啟動參數(shù)
3 安裝部署
3.1?下載
3.2?安裝配置
3.3 測試驗證
3.4 prometheus配置
3.5?在 grafana 中添加圖表?
1 概述
?Exporter是Prometheus的指標數(shù)據(jù)收集組件。它負責(zé)從目標Jobs收集數(shù)據(jù),并把收集到的數(shù)據(jù)轉(zhuǎn)換為Prometheus支持的時序數(shù)據(jù)格式。 和傳統(tǒng)的指標數(shù)據(jù)收集組件不同的是,他只負責(zé)收集,并不向Server端發(fā)送數(shù)據(jù),而是等待Prometheus Server 主動抓取,node-exporter?默認的抓取url地址:http://ip:9100/metrics 。
因為環(huán)境原因,網(wǎng)絡(luò)不可達的場景,Prometheus可以使用Pushgateway這個組件推送node-exporter的指標數(shù)據(jù)到遠端Prometheus,node-exporter用于采集node的運行指標,包括node的cpu、load、filesystem、meminfo、network等基礎(chǔ)監(jiān)控指標,類似于zabbix監(jiān)控系統(tǒng)的的zabbix-agent。node-exporter由Prometheus官方提供、維護,屬于監(jiān)控指標收集類UNIX內(nèi)核操作系統(tǒng)的必備的exporter。
GitHub地址:https://github.com/prometheus/node_exporter#enabled-by-default。
2 功能
2.1 不同操作系統(tǒng)采集端
- node-exporter用于采集類UNIX內(nèi)核的硬件以及系統(tǒng)指標
- Windows系統(tǒng)使用 WMI-exporter
- 采集NVIDIA的GPU指標,可以使用 prometheus-dcgm
2.2?linux操作系統(tǒng)采集端
根據(jù)不同的類UNIX操作系統(tǒng),node-exporter采集指標的支持也是不一樣的。
- diskstats 支持 Darwin, Linux
- cpu 支持 Darwin, Dragonfly, FreeBSD, Linux, Solaris等,
2.3 監(jiān)控指標
- CPU
- 內(nèi)存
- 硬盤
- 網(wǎng)絡(luò)流量
- 文件描述符
- 系統(tǒng)負載
- 系統(tǒng)服務(wù)
2.4 參數(shù)定義
黑名單: 關(guān)閉某一項默認開啟的采集項,使用--no-collector參數(shù)可指定不需要的模塊,如果不指定,將使用默認配置。
白名單:關(guān)閉默認采集項而只開啟某些采集,使用--collector.disable-defaults參數(shù)關(guān)閉默認采集項,使用--collector.<name>指定開啟的采集項。
使用--collectors.enabled參數(shù)打開node_exporter默認的采集項。
部分參數(shù)默認關(guān)閉的原因是:
-
太重
-
太慢
-
太多資源開銷
2.4.1?默認啟用的參數(shù)
Name | Description | OS |
arp | 從/proc/net/ARP中顯示ARP統(tǒng)計信息 | Linux |
bcache | 顯示/sys/fs/bcache/中的bcache統(tǒng)計信息。 | Linux |
bonding | 顯示Linux綁定接口的已配置和活動從屬設(shè)備的數(shù)量。 | LInux |
boottime | 顯示從kern.boottime sysctl派生的系統(tǒng)啟動時間 | Darwin, Dragonfly, FreeBSD, NetBSD, OpenBSD, Solaris |
conntrack | 顯示連接統(tǒng)計信息(如果沒有/proc/sys/net/netfilter/present,則不執(zhí)行任何操作)。 | Linux |
cpu | 顯示CPU統(tǒng)計信息 | Darwin, Dragonfly, FreeBSD, Linux, Solaris |
cpufreq | 顯示CPU頻率統(tǒng)計信息 | Linux, Solaris |
diskstats | 顯示磁盤I/O統(tǒng)計信息。 | Darwin, Linux, OpenBSD |
edac | 顯示錯誤檢測和更正統(tǒng)計信息。 | Linux |
entropy | 顯示可用熵。 | Linux |
exec | 顯示執(zhí)行統(tǒng)計信息。 | Dragonfly, FreeBSD |
filefd | 顯示/proc/sys/fs/file-nr中的文件描述符統(tǒng)計信息。 | Linux |
filesystem | 顯示文件系統(tǒng)統(tǒng)計信息,如使用的磁盤空間。 | Darwin, Dragonfly, FreeBSD, Linux, OpenBSD |
hwmon | 暴露/sys/class/hwmon/中的硬件監(jiān)控和傳感器數(shù)據(jù)。 | Linux |
infiniband | 顯示特定于InfiniBand和Intel OmniPath配置的網(wǎng)絡(luò)統(tǒng)計信息。 | Linux |
ipvs | 顯示/proc/net/ip_vs中的IPVS狀態(tài)和/proc/net/ip_vs_stats中的統(tǒng)計信息。 | Linux |
loadavg | 顯示平均負載。 | Darwin, Dragonfly, FreeBSD, Linux, NetBSD, OpenBSD, Solaris |
mdadm | 在/proc/mdstat中顯示有關(guān)設(shè)備的統(tǒng)計信息(如果不存在/proc/mdtat,則不執(zhí)行任何操作)。 | Linux |
meminfo | 顯示內(nèi)存統(tǒng)計信息。 | Darwin, Dragonfly, FreeBSD, Linux, OpenBSD |
netclass | 顯示/sys/class/net中的網(wǎng)絡(luò)接口信息/ | Linux |
netdev | 顯示網(wǎng)絡(luò)接口統(tǒng)計信息,如傳輸?shù)淖止?jié)數(shù)。 | Darwin, Dragonfly, FreeBSD, Linux, OpenBSD |
netstat | 從/proc/net/netstat中顯示網(wǎng)絡(luò)統(tǒng)計信息。這是與netstat-s相同的信息。 | Linux |
nfs | 從/proc/net/rpc/NFS中顯示NFS客戶端統(tǒng)計信息。這是與nfsstat-c相同的信息。 | Linux |
nfsd | 從/proc/net/rpc/nfsd中顯示NFS內(nèi)核服務(wù)器統(tǒng)計信息。這與nfsstat-s的信息相同。 | Linux |
pressure | 顯示/proc/pressure/中的壓力失速統(tǒng)計信息。 | Linux (kernel 4.20+ and/or?CONFIG_PSI) |
rapl | 顯示/sys/class/powercap中的各種統(tǒng)計信息。 | Linux |
schedstat | 顯示/proc/schedstat中的任務(wù)調(diào)度程序統(tǒng)計信息。 | Linux |
sockstat | 顯示/proc/net/sockstat中的各種統(tǒng)計信息。 | Linux |
softnet | 顯示/proc/net/softnet_stat中的統(tǒng)計信息 | Linux |
stat | 顯示/proc/stat中的各種統(tǒng)計信息。這包括啟動時間、分叉和中斷。 | Linux |
textfile | 顯示從本地磁盤讀取的統(tǒng)計信息。必須設(shè)置--collector.textfile.directory標志。 | any |
thermal_zone | 顯示/sys/class/thermal中的熱區(qū)和冷卻設(shè)備統(tǒng)計信息。 | Linux |
time | 顯示當(dāng)前系統(tǒng)時間。 | any |
timex | 顯示選定的adjtimex(2)系統(tǒng)調(diào)用統(tǒng)計信息 | Linux |
udp_queues | 顯示/proc/net/UDP和/proc/net/udp6中rx_queue和tx_queue的UDP總長度。 | Linux |
uname | 顯示uname系統(tǒng)調(diào)用提供的系統(tǒng)信息。 | Linux |
vmstat | 顯示/proc/vmstat中的統(tǒng)計信息。 | Linux |
xfs | 顯示XFS運行時統(tǒng)計信息。 | Linux (kernel 4.4+) |
zfs | 顯示ZFS性能統(tǒng)計信息。 | Linux, Solaris |
如果不想收集某個類型的指標,就使用--no-collector.<name>
參數(shù),比如:
./node_exporter --no-collector.time
?2.4.2?默認不啟用的參數(shù)
默認不啟用的參數(shù)需要通過--collector.<name>
參數(shù)來啟用,官方提供的不啟用的參數(shù)如下:
Name | Description | OS |
buddyinfo | 顯示/proc/buddyinfo報告的內(nèi)存碎片統(tǒng)計信息。 | Linux |
devstat | 顯示設(shè)備統(tǒng)計信息 | Dragonfly, FreeBSD |
drbd | 顯示分布式復(fù)制數(shù)據(jù)塊設(shè)備統(tǒng)計信息(至8.4版) | LInux |
interrupts | 顯示詳細的中斷統(tǒng)計信息 | Linux, OpenBSD |
ksmd | 從/sys/kernel/mm/ksm中顯示內(nèi)核和系統(tǒng)統(tǒng)計信息。 | Linux |
logind | 顯示登錄名中的會話計數(shù)。 | Linux |
meminfo_numa | 從logind中顯示會話計數(shù)。從/proc/meminfo_numa中顯示內(nèi)存統(tǒng)計信息。 | Linux |
mountstats | 從/proc/self/mountstats中顯示文件系統(tǒng)統(tǒng)計信息。顯示詳細的NFS客戶端統(tǒng)計信息。 | Linux |
ntp | 顯示本地NTP守護程序運行狀況以檢查時間 | any |
processes | 顯示/proc中的聚合進程統(tǒng)計信息 | Linux |
qdisc | 顯示排隊規(guī)則統(tǒng)計信息 | Linux |
runit | 顯示排隊規(guī)則統(tǒng)計信息從runit中顯示服務(wù)狀態(tài)。 | any |
supervisord | 從supervisord中顯示服務(wù)狀態(tài) | any |
systemd | 從systemd中顯示服務(wù)和系統(tǒng)狀態(tài)。 | Linux |
tcpstat | 從/proc/net/TCP和/proc/net/trcp6中顯示TCP連接狀態(tài)信息。(警告:當(dāng)前版本在高負載情況下可能存在性能問題。) | Linux |
wifi | 顯示W(wǎng)iFi設(shè)備和站點統(tǒng)計信息。 | Linux |
perf | 顯示基于性能的指標(警告:指標取決于內(nèi)核配置和設(shè)置)。 | ?Linux |
2.5 啟動參數(shù)
- --web.listen-address:指定啟動端口,例如:--web.listen-address=":8080"。
--web.config.file=web-config.yml:指定配置文件。
- --collector.systemd:收集主機上面運行服務(wù)的狀態(tài),啟用systemd收集器。
- --collector.systemd.unit-include="(docker|sshd).service":指定systemd服務(wù),與--collector.systemd搭配使用。
- –collector.vmstat.fields=^(oom_kill|pgpg|pswp|nr|pg.fault):監(jiān)控系統(tǒng)事件。
- --collector.disable-defaults:禁用所有默認開啟的收集器。
- --collector.< name>:指定開啟的收集器,與--collector.disable-defaults搭配使用。
- --collector.textfile.directory="/opt/prom":自定義監(jiān)控數(shù)據(jù)目錄。
- --web.telemetry-path="/metrics":指定metrics的路徑,默認為/metrics。
- --web.disable-exporter-metrics:是否禁用go、prome默認的metrics。
- ?--web.max-requests=40:最大并行請求數(shù),默認40,設(shè)置為0時不限制。
- --log.level="info":日志等級: [debug, info, warn, error, fatal]。
- ?--log.format=logfmt :設(shè)置日志打印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[]參數(shù)可以多次使用。
- cpu
- meminfo
重啟 prometheus,查看狀態(tài)
基于發(fā)現(xiàn)配置prometheus
在prometheus 主配置文件配置定義子配置文件路徑
??-?job_name:?'node' ????static_configs: ????file_sd_configs: ????-?files: ??????-?metrics/node_exporter*.yaml ??????refresh_interval:?2m
在prometheus安裝目錄下的targets目錄下(在主配置文件定義metrics目錄不存在則手動創(chuàng)建)創(chuàng)建文件 node_exporter65.yaml。
- targets: ['192.168.111.65:9100'] # 如果有多個node_exporter,配置到[]中,隔開添加不需要重啟服務(wù),服務(wù)自動發(fā)現(xiàn)node_exporter客戶端
labels:
app: node-exporter
job: node
3.5?在 grafana 中添加圖表?
1)開啟alertmanager配置告警規(guī)則
prometheus 主配置文件配置定義子配置文件路徑
rule_files:
????-?"rules/*.yml"
2)prometheus 告警規(guī)則文章來源:http://www.zghlxwxcb.cn/news/detail-435269.html
在prometheus安裝目錄下的定義的rules目錄下(如果rules目錄不存在)創(chuàng)建文件 alarm_rule.yml,文章來源地址http://www.zghlxwxcb.cn/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 發(fā)送消息
annotations:
summary: "實例 {{ $labels.instance }} CPU使用率過高"
description: "{{ $labels.instance }} CPU 使用率大于 85% (當(dāng)前值為: {{ $value }})"
- alert: hostMemUsageAlert
expr: (1 - (node_memory_MemAvailable_bytes / (node_memory_MemTotal_bytes)))* 100>85
for: 1m
labels:
level: disaster
annotations:
summary: "實例 {{ $labels.instance }} 內(nèi)存使用率過高"
description: "{{ $labels.instance }} 內(nèi)存使用率大于 85% (當(dāng)前的值: {{ $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 核心數(shù) (當(dāng)前的值: {{ $value }})"
- alert: hostUp
expr: up{job="node"} == 0
for: 1m
labels:
level: disaster
annotations:
summary: "實例 {{ $labels.instance }} 不可達"
description: "{{ $labels.instance }} 實例不可達,請盡快解決"
到了這里,關(guān)于Prometheus監(jiān)控實戰(zhàn)之node_exporter詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!