Prometheus Node_exporter

Node Exporter

  node_exporter 主要用於 *NIX 系統監控, 用 Golang 編寫。node

功能對照表

默認開啓的功能
名稱 說明 系統
arp /proc/net/arp 中收集 ARP 統計信息 Linux
conntrack /proc/sys/net/netfilter/ 中收集 conntrack 統計信息 Linux
cpu 收集 cpu 統計信息

Darwin, Dragonfly, linux

FreeBSD, Linuxgit

diskstats /proc/diskstats 中收集磁盤 I/O 統計信息 Linux
edac 錯誤檢測與糾正統計信息 Linux
entropy 可用內核熵信息 Linux
exec execution 統計信息 Dragonfly, FreeBSD
filefd                    /proc/sys/fs/file-nr 中收集文件描述符統計信息 Linux
filesystem 文件系通通計信息,例如磁盤已使用空間

Darwin, Dragonfly,github

FreeBSD, Linux, OpenBSDweb

hwmon /sys/class/hwmon/ 中收集監控器或傳感器數據信息 Linux
infiniband 從 InfiniBand 配置中收集網絡統計信息 Linux
loadavg 收集系統負載信息

Darwin, Dragonfly, FreeBSD,數據庫

Linux, NetBSD, OpenBSD, Solarisjson

mdadm /proc/mdstat 中獲取設備統計信息 Linux
meminfo 內存統計信息

Darwin, Dragonfly,vim

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 收集的功能模塊, 若是不指定,將使用默認模塊。

 

程序安裝

下載地址:https://prometheus.io/download/#node_exporter

安裝node exporter
tar -zxvf node_exporter-0.16.0.linux-amd64.tar.gz

mv node_exporter-0.16.0.linux-amd64 /usr/local/node_exporter
建立systemd服務
vim /etc/systemd/system/node_exporter.service

[Unit]
Description=node_exporter
After=network.target

[Service]
Type=simple
User=prometheus
ExecStart=/usr/local/node_exporter/node_exporter
Restart=on-failure

[Install]
WantedBy=multi-user.target
啓動node_exporter
systemctl daemon-reload
systemctl start node_exporter
systemctl status node_exporter
systemctl enable node_exporter
驗證啓動成功
curl 127.0.0.1:9100
curl 127.0.0.1:9100/metrics

拉取數據

能夠利用 Prometheus 的 static_configs 來拉取 node_exporter 的數據。

編輯prometheus.yml文件,添加內容

- job_name: 'node'
    static_configs:
    - targets: ['localhost:9100']

重啓prometheus,而後在Prometheus頁面中的Targets中就能看到新加入的node

Node Exporter 經常使用查詢語句

收集到 node_exporter 的數據後,咱們可使用 PromQL 進行一些業務查詢和監控,下面是一些比較常見的查詢

如下查詢均以單個節點做爲例子,若是你們想查看全部節點,將 instance="xxx" 去掉便可。

CPU使用率

100 - (avg by (instance) (irate(node_cpu{instance="172.16.8.153:9100", mode="idle"}[5m])) * 100)

CPU各個mode使用率

avg by (instance, mode) (irate(node_cpu{instance="172.16.8.153:9100"}[5m])) * 100
  • User:CPU一共花了多少比例的時間運行在用戶態空間或者說是用戶進程(running user space processes)。典型的用戶態空間程序有:Shells、數據庫、web服務器等

  • Nice:可理解爲,用戶空間進程的CPU的調度優先級,範圍爲[-20,19]

  • System:System的含義與User類似。System表示:CPU花了多少比例的時間在內核空間運行。分配內存、IO操做、建立子進程……都是內核操做。這也代表,當IO操做頻繁時,System參數會很高

  • ioWait:在計算機中,讀寫磁盤的操做遠比CPU運行的速度要慢,CPU負載處理數據,而數據通常在磁盤上須要讀到內存中才能處理。當CPU發起讀寫操做後,須要等着磁盤驅動器將數據讀入內存,從而致使CPU 在等待的這一段時間內無事可作。CPU處於這種等待狀態的時間由Wait參數來衡量

  • Idle:CPU處於空閒狀態時間比例。通常而言,idel + user + nice 約等於100%

機器平均負載

node_load1{instance="172.16.8.153:9100"}   // 1分鐘負載
node_load5{instance="172.16.8.153:9100"}   // 5分鐘負載
node_load15{instance="172.16.8.153:9100"}  // 15分鐘負載  

內存使用率

100-(node_memory_MemFree{instance="172.16.8.172:9100"}+node_memory_Cached{instance="172.16.8.172:9100"}+node_memory_Buffers{instance="172.16.8.172:9100"})/node_memory_MemTotal{instance="172.16.8.172:9100"} * 100

磁盤使用率

100 - node_filesystem_free{instance="172.16.8.153:9100",fstype!~"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|udev|none|devpts|sysfs|debugfs|fuse.*"} / node_filesystem_size{instance="172.16.8.153:9100",fstype!~"rootfs|selinuxfs|autofs|rpc_pipefs|tmpfs|udev|none|devpts|sysfs|debugfs|fuse.*"} * 100

或者你也能夠直接使用 {fstype="xxx"} 來指定想查看的磁盤信息

網卡出/入包

// 入包量
sum by (instance) (rate(node_network_receive_bytes{instance="172.16.8.153:9100",device!="lo"}[5m]))

// 出包量
sum by (instance) (rate(node_network_transmit_bytes{instance="172.16.8.153:9100",device!="lo"}[5m]))

Node exporter Dashboard 模板

獲取node exporter dashboard

1.下載dashboard json文件在上傳到grafana中
https://grafana.com/dashboards/1860

2.直接在grafana中輸入相應導入的dashboard code_id

 

 

輸入code_id 或者 導入json文件

有些儀表盤上面是沒有數據的,可能有些參數須要調整(模板可能適應之前的版本),對照這PromQL 修改參數

相關文章
相關標籤/搜索