*NIX カーネルによって公開されるハードウェアおよび OS メトリクス用の Prometheus エクスポータ。プラグイン可能なメトリクス コレクタを備えた Go で記述されています。
Windows ユーザーには Windows エクスポータが推奨されます。 NVIDIA GPU メトリクスを公開するには、prometheus-dcgm を使用できます。
Prometheus とnode_exporter
を初めて使用する場合は、簡単なステップバイステップ ガイドがあります。
node_exporter
、デフォルトで HTTP ポート 9100 をリッスンします。その他のオプションについては、 --help
出力を参照してください。
Ansible による自動インストールには、Prometheus Community ロールがあります。
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
コレクターは、必要な syscall にアクセスするために、追加の 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/.+)( $ |/)
リスト:
コレクタ | 範囲 | フラグを含める | 除外フラグ |
---|---|---|---|
アルプ | デバイス | --collector.arp.device-include | --collector.arp.device-exclude |
CPU | バグ | --collector.cpu.info.bugs-include | 該当なし |
CPU | フラグ | --collector.cpu.info.flags-include | 該当なし |
ディスク統計 | デバイス | --collector.diskstats.device-include | --collector.diskstats.device-exclude |
エスツール | デバイス | --collector.ethtool.device-include | --collector.ethtool.device-exclude |
エスツール | メトリクス | --collector.ethtool.metrics-include | 該当なし |
ファイルシステム | fs タイプ | 該当なし | --collector.filesystem.fs-types-exclude |
ファイルシステム | マウントポイント | 該当なし | --collector.filesystem.mount-points-exclude |
ホモン | チップ | --collector.hwmon.chip-include | --collector.hwmon.chip-exclude |
ホモン | センサー | --collector.hwmon.sensor-include | --collector.hwmon.sensor-exclude |
割り込む | 名前 | --collector.interrupts.name-include | --collector.interrupts.name-exclude |
ネット開発 | デバイス | --collector.netdev.device-include | --collector.netdev.device-exclude |
qディスク | デバイス | --collector.qdisk.device-include | --collector.qdisk.device-exclude |
スラブ情報 | スラブ名 | --collector.slabinfo.slabs-include | --collector.slabinfo.slabs-exclude |
sysctl | 全て | --collector.sysctl.include | 該当なし |
システムド | ユニット | --collector.systemd.unit-include | --collector.systemd.unit-exclude |
名前 | 説明 | OS |
---|---|---|
アルプ | /proc/net/arp から ARP 統計を公開します。 | Linux |
キャッシュ | /sys/fs/bcache/ から bcache 統計を公開します。 | Linux |
ボンディング | Linux ボンディング インターフェイスの構成済みのアクティブなスレーブの数を公開します。 | Linux |
btrfs | btrfs 統計を公開します | Linux |
起動時間 | kern.boottime sysctl から派生したシステム起動時間を公開します。 | ダーウィン、ドラゴンフライ、FreeBSD、NetBSD、OpenBSD、Solaris |
接続する | conntrack 統計を表示します ( /proc/sys/net/netfilter/ が存在しない場合は何も行いません)。 | Linux |
CPU | CPU統計を公開します | ダーウィン、ドラゴンフライ、FreeBSD、Linux、Solaris、OpenBSD |
CPU周波数 | CPU周波数統計を公開します | Linux、ソラリス |
ディスク統計 | ディスク I/O 統計を公開します。 | ダーウィン、Linux、OpenBSD |
dmi | /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統計を公開します | FreeBSD |
ネット統計 | /proc/net/netstat からネットワーク統計を公開します。これはnetstat -s と同じ情報です。 | Linux |
NFS | /proc/net/rpc/nfs から NFS クライアント統計を公開します。これは、 nfsstat -c と同じ情報です。 | Linux |
nfsd | /proc/net/rpc/nfsd から NFS カーネル サーバー統計を公開します。これは、 nfsstat -s と同じ情報です。 | Linux |
NVME | /sys/class/nvme/ から NVMe 情報を公開します | Linux |
OS | /etc/os-release または/usr/lib/os-release から OS リリース情報を公開します | どれでも |
電源クラス | /sys/class/power_supply から電源統計を公開します | Linux |
プレッシャー | /proc/pressure/ から圧力ストール統計を公開します。 | Linux (カーネル 4.20 以降および/または CONFIG_PSI) |
ラップル | /sys/class/powercap からさまざまな統計を公開します。 | Linux |
スケジュール統計 | /proc/schedstat からタスク スケジューラの統計を公開します。 | Linux |
セリナックス | 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_queues | rx_queue と tx_queue の UDP 合計長を/proc/net/udp および/proc/net/udp6 から公開します。 | Linux |
うなめ | uname システム コールによって提供されるシステム情報を公開します。 | ダーウィン、FreeBSD、Linux、OpenBSD |
vmstat | /proc/vmstat から統計を公開します。 | Linux |
番犬 | /sys/class/watchdog から統計を公開します | Linux |
xfs | XFS ランタイム統計を公開します。 | Linux (カーネル 4.4 以降) |
zfs | ZFS パフォーマンス統計を公開します。 | FreeBSD、Linux、Solaris |
node_exporter
デフォルトで無効になっているいくつかのコレクターも実装します。この理由はコレクターによって異なりますが、次のようなものが考えられます。
scrape_interval
またはscrape_timeout
超える長時間のランタイム必要に応じて、init システムまたはサービス スーパーバイザのnode_exporter
のスタートアップ設定にコレクタを追加することで、追加のコレクタを有効にすることができますが、注意が必要です。一度に最大 1 つを有効にして、最初は非実稼働システムでテストし、次に単一の実稼働ノードで手動でテストします。追加のコレクターを有効にする場合は、収集が完了してタイムアウトしないことを確認するために、 scrape_duration_seconds
メトリクスを観察して変更を注意深く監視する必要があります。さらに、 scrape_samples_post_metric_relabeling
メトリクスを監視して、カーディナリティの変化を確認します。
名前 | 説明 | OS |
---|---|---|
仲間情報 | /proc/buddyinfo によって報告されるメモリ フラグメントの統計を公開します。 | Linux |
cgroup | アクティブで有効な cgroup の数の概要 | Linux |
cpu_脆弱性 | sysfs から CPU の脆弱性情報を公開します。 | Linux |
開発統計 | デバイス統計を公開します | トンボ、FreeBSD |
DRM | sysfs / DRM を使用して GPU メトリクスを公開します。amdgpu amdgpu 、DRM を通じてこの情報を公開する唯一のドライバーです | Linux |
drbd | Distributed Replicated Block Device 統計を公開します (バージョン 8.4 まで) | Linux |
エスツール | ethtool 、 ethtool -S 、およびethtool -i と同等のネットワーク インターフェイス情報とネットワーク ドライバー統計を公開します。 | Linux |
割り込む | 詳細な割り込み統計を公開します。 | Linux、OpenBSD |
ksmd | /sys/kernel/mm/ksm からカーネルとシステムの統計を公開します。 | Linux |
インスタット | /proc/net/stat/ から統計を公開します。 | Linux |
ログイン | logind からセッション数を公開します。 | Linux |
meminfo_沼 | /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 |
qディスク | キューイング規律の統計を公開します | Linux |
スラブ情報 | /proc/slabinfo からスラブ統計を公開します。なお、 /proc/slabinfo のパーミッションは通常 0400 なので、適切に設定してください。 | Linux |
ソフトインク | /proc/softirqs から詳細な Softirq 統計を公開します。 | Linux |
sysctl | /proc/sys から sysctl 値を公開します。 --collector.sysctl.include(-info) を使用して構成します。 | Linux |
システムド | systemd からサービスとシステムのステータスを公開します。 | Linux |
tcpstat | /proc/net/tcp および/proc/net/tcp6 から TCP 接続ステータス情報を公開します。 (警告: 現在のバージョンには、高負荷状況でパフォーマンス上の問題が発生する可能性があります。) | Linux |
Wi-Fi | WiFi デバイスとステーションの統計情報を公開します。 | Linux |
xfrm | /proc/net/xfrm_stat から統計を公開します | Linux |
ゾーン情報 | NUMA メモリ ゾーン メトリクスを公開します。 | Linux |
これらのコレクターは非推奨となっており、次のメジャー リリースで削除される予定です。
名前 | 説明 | OS |
---|---|---|
NTP | ローカル NTP デーモンの健全性を公開して時間を確認します | どれでも |
ルニット | runit からサービスのステータスを公開します。 | どれでも |
監視された | 監視対象からのサービス ステータスを公開します。 | どれでも |
カーネル構成とセキュリティ設定により、一部の Linux システムではperf
コレクターがそのままでは動作しない場合があります。アクセスを許可するには、次のsysctl
パラメータを設定します。
sysctl -w kernel.perf_event_paranoid=X
構成された値に応じて、さまざまなメトリックが使用可能になります。ほとんどの場合、 0
最も完全なセットを提供します。詳細については、 man 2 perf_event_open
を参照してください。
デフォルトでは、 perf
コレクターは、 node_exporter
が実行されている CPU (つまり、 runtime.NumCPU
) のメトリックのみを収集します。これでは不十分な場合 (たとえば、CPU アフィニティーを特定の CPU に設定してnode_exporter
を実行する場合)、次のリストを指定できます。たとえば、CPU 2 ~ --collector.perf.cpus
のメトリクスを収集するには、 --collector.perf --collector.perf.cpus=2-6
と指定します。インデックスはゼロであり、ストライド値を取ることもできます。たとえば、 --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
を使用します。 --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 構成では、スクレイプ構成でこの構文を使用できます。
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
詳細については、exporter-toolkit の Web 設定を参照してください。