Prometheus 導出器,用於 *NIX 核心公開的硬體和作業系統指標,用 Go 編寫,帶有可插入指標收集器。
建議 Windows 使用者使用 Windows 匯出器。若要公開 NVIDIA GPU 指標,可以使用 prometheus-dcgm。
如果您是 Prometheus 和node_exporter
的新手,這裡有一個簡單的逐步指南。
預設情況下, node_exporter
偵聽 HTTP 連接埠 9100。有關更多選項,請參閱--help
輸出。
對於使用 Ansible 進行自動化安裝,有 Prometheus 社群角色。
node_exporter
旨在監控主機系統。在容器中部署需要格外小心,以避免監視容器本身。
對於需要容器化部署的情況,必須使用一些額外的標誌來允許node_exporter
存取主機命名空間。
請注意,您想要監視的任何非根安裝點都需要綁定安裝到容器中。
如果啟動容器進行主機監控,請指定path.rootfs
參數。此參數必須與主機根的綁定安裝中的路徑相符。 node_exporter 將使用path.rootfs
作為前綴來存取主機檔案系統。
docker run -d
--net= " host "
--pid= " host "
-v " /:/host:ro,rslave "
quay.io/prometheus/node-exporter:latest
--path.rootfs=/host
對於 Docker compose,需要類似的標誌變更。
---
version : ' 3.8 '
services :
node_exporter :
image : quay.io/prometheus/node-exporter:latest
container_name : node_exporter
command :
- ' --path.rootfs=/host '
network_mode : host
pid : host
restart : unless-stopped
volumes :
- ' /:/host:ro,rslave '
在某些系統上, timex
收集器需要額外的 Docker 標誌--cap-add=SYS_TIME
才能存取所需的系統呼叫。
每個作業系統對收集器的支援各不相同。下表列出了所有現有收集器和支援的系統。
透過提供--collector.
標誌來啟用收集器。可以透過提供--no-collector.
標誌來停用預設啟用的收集器。若要僅啟用某些特定的收集器,請使用--collector.disable-defaults --collector.
。
可以將一些收集器配置為使用專用標誌包含或排除某些模式。排除標誌用於指示“除所有”之外,而包含標誌用於表示“無除”。請注意,這些標誌在支援這兩種標誌的收集器上是互斥的。
例子:
--collector.filesystem.mount-points-exclude= ^ /(dev|proc|sys|var/lib/docker/.+|var/lib/kubelet/.+)( $ |/)
列表:
集電極 | 範圍 | 包括標誌 | 排除標誌 |
---|---|---|---|
ARP | 裝置 | --collector.arp.device-include | --collector.arp.設備排除 |
中央處理器 | 蟲 | --collector.cpu.info.bugs-include | 不適用 |
中央處理器 | 旗幟 | --collector.cpu.info.flags-include | 不適用 |
磁碟統計 | 裝置 | --collector.diskstats.device-include | --collector.diskstats.設備排除 |
網路工具 | 裝置 | --collector.ethtool.device-include | --collector.ethtool.設備排除 |
網路工具 | 指標 | --collector.ethtool.metrics-include | 不適用 |
檔案系統 | fs 類型 | 不適用 | --collector.filesystem.fs-類型-排除 |
檔案系統 | 掛載點 | 不適用 | --collector.filesystem.掛載點-排除 |
胡文 | 晶片 | --collector.hwmon.chip-include | --collector.hwmon.chip-排除 |
胡文 | 感應器 | --collector.hwmon.sensor-include | --collector.hwmon.感測器排除 |
中斷 | 姓名 | --collector.interrupts.name-include | --collector.interrupts.name-排除 |
網路開發者 | 裝置 | --collector.netdev.device-include | --collector.netdev.裝置排除 |
qdisk | 裝置 | --collector.qdisk.device-include | --collector.qdisk.設備排除 |
板資訊 | 板坯名稱 | --collector.slabinfo.slabs-include | --collector.slabinfo.slabs-排除 |
系統控制 | 全部 | --collector.sysctl.include | 不適用 |
系統 | 單元 | --collector.systemd.unit-include | --collector.systemd.unit-排除 |
姓名 | 描述 | 作業系統 |
---|---|---|
ARP | 從/proc/net/arp 公開 ARP 統計資料。 | Linux |
快取 | 從/sys/fs/bcache/ 公開 bcache 統計資料。 | Linux |
黏合 | 公開 Linux 綁定介面的已設定和活動從屬裝置的數量。 | Linux |
BTFS | 公開 btrfs 統計訊息 | Linux |
啟動時間 | 公開從kern.boottime sysctl 衍生的系統啟動時間。 | 達爾文、蜻蜓、FreeBSD、NetBSD、OpenBSD、Solaris |
連線 | 顯示 conntrack 統計資料(如果沒有/proc/sys/net/netfilter/ 則不執行任何操作)。 | Linux |
中央處理器 | 公開 CPU 統計訊息 | 達爾文、蜻蜓、FreeBSD、Linux、Solaris、OpenBSD |
CPU頻率 | 公開 CPU 頻率統計訊息 | Linux、Solaris |
磁碟統計 | 公開磁碟 I/O 統計資訊。 | 達爾文、Linux、OpenBSD |
迪米 | 從/sys/class/dmi/id/ 公開桌面管理介面 (DMI) 訊息 | Linux |
埃達克 | 公開錯誤偵測和修正統計資料。 | Linux |
熵 | 暴露可用的熵。 | Linux |
執行 | 公開執行統計資訊。 | 蜻蜓、FreeBSD |
光纖通道 | 從/sys/class/fc_host/ 公開光纖通道資訊和統計資料。 | Linux |
檔案描述符 | 從/proc/sys/fs/file-nr 公開檔案描述符統計資料。 | Linux |
檔案系統 | 公開檔案系統統計訊息,例如使用的磁碟空間。 | 達爾文、蜻蜓、FreeBSD、Linux、OpenBSD |
胡文 | 從/sys/class/hwmon/ 公開硬體監控和感測器資料。 | Linux |
無限頻寬 | 公開特定於 InfiniBand 和 Intel OmniPath 配置的網路統計資訊。 | Linux |
ipvs | 從/proc/net/ip_vs 公開 IPVS 狀態,並從/proc/net/ip_vs_stats 公開統計資料。 | Linux |
平均負載 | 暴露平均負載。 | 達爾文、蜻蜓、FreeBSD、Linux、NetBSD、OpenBSD、Solaris |
米達德姆 | 公開/proc/mdstat 中有關裝置的統計資訊(如果不存在/proc/mdstat ,則不執行任何操作)。 | Linux |
記憶體資訊 | 公開記憶體統計資訊。 | 達爾文、蜻蜓、FreeBSD、Linux、OpenBSD |
網類 | 從/sys/class/net/ 公開網路介面信息 | Linux |
網路開發者 | 公開網路介面統計訊息,例如傳輸的位元組數。 | 達爾文、蜻蜓、FreeBSD、Linux、OpenBSD |
網路服務 | 公開 netisr 統計訊息 | 自由BSD |
網路統計 | 從/proc/net/netstat 公開網路統計資料。這與netstat -s 的資訊相同。 | Linux |
網路檔案系統 | 從/proc/net/rpc/nfs 公開 NFS 用戶端統計資訊。這與nfsstat -c 資訊相同。 | Linux |
國家食品安全標準 | 從/proc/net/rpc/nfsd 公開 NFS 核心伺服器統計資料。這與nfsstat -s 資訊相同。 | Linux |
NVME | 從/sys/class/nvme/ 公開 NVMe 信息 | Linux |
作業系統 | 從/etc/os-release 或/usr/lib/os-release 公開作業系統版本訊息 | 任何 |
電源類 | 從/sys/class/power_supply 公開電源統計信息 | Linux |
壓力 | 從/proc/pressure/ 公開壓力失速統計資料。 | Linux(核心 4.20+ 和/或 CONFIG_PSI) |
拉普爾 | 公開來自/sys/class/powercap 的各種統計資料。 | Linux |
調度統計 | 從/proc/schedstat 公開任務排程器統計資料。 | Linux |
SELinux | 公開 SELinux 統計資料。 | Linux |
襪子狀態 | 公開來自/proc/net/sockstat 的各種統計資料。 | Linux |
軟體網 | 公開來自/proc/net/softnet_stat 的統計資料。 | Linux |
統計數據 | 公開/proc/stat 中的各種統計資料。這包括啟動時間、分叉和中斷。 | Linux |
磁帶統計器 | 公開來自/sys/class/scsi_tape 的統計資料。 | Linux |
文字檔案 | 公開從本機磁碟讀取的統計資料。必須設定--collector.textfile.directory 標誌。 | 任何 |
熱的 | 公開熱統計數據,如pmset -g therm 。 | 達爾文 |
熱區 | 從/sys/class/thermal 公開熱區域和冷卻設備統計資料。 | Linux |
時間 | 公開目前系統時間。 | 任何 |
天美時 | 顯示選定的 adjtimex(2) 系統呼叫統計資料。 | Linux |
udp_隊列 | 從/proc/net/udp 和/proc/net/udp6 公開 rx_queue 和 tx_queue 的 UDP 總長度。 | Linux |
烏納梅 | 公開 uname 系統呼叫提供的系統資訊。 | 達爾文、FreeBSD、Linux、OpenBSD |
虛擬機器狀態 | 公開來自/proc/vmstat 的統計資料。 | Linux |
看門狗 | 公開來自/sys/class/watchdog 的統計訊息 | Linux |
xfs | 公開 XFS 運行時統計資料。 | Linux(核心 4.4+) |
茲夫斯 | 公開 ZFS 效能統計資料。 | FreeBSD、Linux、Solaris |
node_exporter
還實作了許多預設情況下禁用的收集器。造成這種情況的原因因收藏家而異,可能包括:
scrape_interval
或scrape_timeout
您可以根據需要啟用其他收集器,方法是將它們新增至 init 系統或服務管理程式的node_exporter
啟動設定中,但建議謹慎。一次最多啟用一個,首先在非生產系統上進行測試,然後在單一生產節點上進行手動測試。啟用其他收集器時,您應該透過觀察scrape_duration_seconds
指標來仔細監控更改,以確保收集完成並且不會逾時。此外,監控scrape_samples_post_metric_relabeling
指標以查看基數的變化。
姓名 | 描述 | 作業系統 |
---|---|---|
好友訊息 | 公開 /proc/buddyinfo 報告的記憶體碎片統計資料。 | Linux |
cgroups | 活動和啟用的 cgroup 數量的摘要 | Linux |
cpu_漏洞 | 從 sysfs 公開 CPU 漏洞資訊。 | Linux |
開發狀態 | 公開設備統計訊息 | 蜻蜓、FreeBSD |
數位版權管理 | 使用 sysfs / DRM 公開 GPU 指標, amdgpu 是唯一透過 DRM 公開此資訊的驅動程式 | Linux |
德魯布德 | 公開分散式複製區塊裝置統計資料(至版本 8.4) | Linux |
網路工具 | 公開網路介面資訊和網路驅動程式統計信息,相當於ethtool 、 ethtool -S 和ethtool -i 。 | Linux |
中斷 | 顯示詳細的中斷統計資料。 | Linux、開放式BSD |
克什莫德 | 從/sys/kernel/mm/ksm 公開核心和系統統計資訊。 | Linux |
統計數據 | 從/proc/net/stat/ 公開統計資訊。 | Linux |
已登入 | 公開登入後的會話計數。 | Linux |
記憶體資訊_numa | 從/sys/devices/system/node/node[0-9]*/meminfo 、 /sys/devices/system/node/node[0-9]*/numastat 公開記憶體統計資料。 | Linux |
掛載統計訊息 | 從/proc/self/mountstats 公開檔案系統統計資料。公開詳細的 NFS 客戶端統計資料。 | Linux |
網路路由 | 將路由表公開為指標 | Linux |
效能 | 公開基於效能的指標(警告:指標取決於核心配置和設定)。 | Linux |
流程 | 公開來自/proc 聚合進程統計資料。 | Linux |
隊列磁碟 | 公開排隊紀律統計數據 | Linux |
板資訊 | 從/proc/slabinfo 公開slab統計資料。注意/proc/slabinfo 的權限一般是0400,所以要適當設定。 | Linux |
軟中斷 | 從/proc/softirqs 公開詳細的軟體中斷統計資料。 | Linux |
系統控制 | 從/proc/sys 公開 sysctl 值。使用--collector.sysctl.include(-info) 進行設定。 | Linux |
系統 | 從 systemd 公開服務和系統狀態。 | Linux |
tcpstat | 從/proc/net/tcp 和/proc/net/tcp6 公開 TCP 連線狀態資訊。 (警告:當前版本在高負載情況下存在潛在的效能問題。) | Linux |
無線上網 | 公開 WiFi 設備和網站統計資料。 | Linux |
xfrm | 公開來自/proc/net/xfrm_stat 的統計信息 | Linux |
區域資訊 | 公開 NUMA 記憶體區域指標。 | Linux |
這些收集器已被棄用,並將在下一個主要版本中刪除。
姓名 | 描述 | 作業系統 |
---|---|---|
網路傳輸協定 | 公開本地 NTP 守護程序運行狀況以檢查時間 | 任何 |
魯尼特 | 從 runit 公開服務狀態。 | 任何 |
監督者 | 從 Supervisord 公開服務狀態。 | 任何 |
由於核心配置和安全設定的原因, perf
收集器可能無法在某些 Linux 系統上開箱即用。若要允許訪問,請設定以下sysctl
參數:
sysctl -w kernel.perf_event_paranoid=X
根據配置的值,將提供不同的指標,在大多數情況下, 0
將提供最完整的集合。有關更多信息,請參閱man 2 perf_event_open
。
預設情況node_exporter
, perf
收集器將只收集執行node_exporter
的CPU 的指標(即runtime.NumCPU
)。清單使用--collector.perf.cpus
標誌取代 CPU 例如,若要收集 CPU 2-6 上的指標,可以指定: --collector.perf --collector.perf.cpus=2-6
CPU 配置。零,也可以採用跨度值;例如--collector.perf --collector.perf.cpus=1-10:5
將在 CPU 1、5 和 10 上收集。
使用--collector.perf.tracepoint
標誌時, perf
收集器也能夠收集追蹤點計數。可以使用perf list
或從 debugfs 找到追蹤點。其範例用法為--collector.perf.tracepoint="sched:sched_process_exec"
。
sysctl
收集器可以使用--collector.sysctl
啟用。它支援使用--collector.sysctl.include
標誌將數字 sysctl 值公開為指標,並使用--collector.sysctl.include-info
標誌將字串值公開為資訊指標。標誌可以重複。對於具有多個數值的 sysctl,可以給出可選映射以將每個值公開為其自己的指標。否則,使用index
標籤來標識不同的欄位。
使用--collector.sysctl.include=vm.user_reserve_kbytes
: vm.user_reserve_kbytes = 131072
-> node_sysctl_vm_user_reserve_kbytes 131072
sysctl 可以包含多個值,例如:
net.ipv4.tcp_rmem = 4096 131072 6291456
使用--collector.sysctl.include=net.ipv4.tcp_rmem
收集器將會公開:
node_sysctl_net_ipv4_tcp_rmem{index="0"} 4096
node_sysctl_net_ipv4_tcp_rmem{index="1"} 131072
node_sysctl_net_ipv4_tcp_rmem{index="2"} 6291456
如果索引已定義意義(如本例所示),則可以透過將對應附加到 --collector.sysctl.include 標誌來將值對應到多個指標: 使用--collector.sysctl.include=net.ipv4.tcp_rmem:min,default,max
收集器將會公開:
node_sysctl_net_ipv4_tcp_rmem_min 4096
node_sysctl_net_ipv4_tcp_rmem_default 131072
node_sysctl_net_ipv4_tcp_rmem_max 6291456
字串值需要作為資訊指標公開。使用者透過使用--collector.sysctl.include-info
標誌來選擇它們。
kernel.core_pattern = core
-> node_sysctl_info{key="kernel.core_pattern_info", value="core"} 1
給定以下 sysctl:
kernel.seccomp.actions_avail = kill_process kill_thread trap errno trace log allow
設定--collector.sysctl.include-info=kernel.seccomp.actions_avail
將產生:
node_sysctl_info{key="kernel.seccomp.actions_avail", index="0", value="kill_process"} 1
node_sysctl_info{key="kernel.seccomp.actions_avail", index="1", value="kill_thread"} 1
...
textfile
收集器類似於 Pushgateway,因為它允許從批次作業匯出統計資料。它也可用於匯出靜態指標,例如機器的角色。 Pushgateway 應用於服務等級指標。 textfile
模組用於與機器綁定的指標。
若要使用它,請在node_exporter
命令列上設定--collector.textfile.directory
標誌。收集器將使用文字格式解析該目錄中與 glob *.prom
相符的所有檔案。注意:不支援時間戳。
以原子方式推動 cron 作業的完成時間:
echo my_batch_job_completion_time $(date +%s) > /path/to/directory/my_batch_job.prom.$$
mv /path/to/directory/my_batch_job.prom.$$ /path/to/directory/my_batch_job.prom
若要使用標籤靜態設定機器的角色:
echo 'role{role="application_server"} 1' > /path/to/directory/role.prom.$$
mv /path/to/directory/role.prom.$$ /path/to/directory/role.prom
預設情況下, node_exporter
將公開啟用的收集器中的所有指標。這是收集指標的建議方法,以避免在比較不同系列的指標時出現錯誤。
對於進階使用,可以向node_exporter
傳遞一個可選的收集器清單來過濾指標。參數collect[]
和exclude[]
可以多次使用(但不能組合)。在 Prometheus 配置中,您可以在 scrape 配置下使用此語法。
僅收集cpu
和meminfo
收集器指標:
params:
collect[]:
- cpu
- meminfo
收集所有已啟用的收集器指標,但排除netdev
:
params:
exclude[]:
- netdev
這對於讓不同的 Prometheus 伺服器從節點收集特定指標非常有用。
先決條件:
glibc-static
軟體包。建築:
git clone https://github.com/prometheus/node_exporter.git
cd node_exporter
make build
./node_exporter
若要查看所有可用的配置標誌:
./node_exporter -h
make test
實驗性的
匯出器透過新的 Web 設定檔支援 TLS。
./node_exporter --web.config.file=web-config.yml
有關更多詳細信息,請參閱匯出器工具包 Web 配置。