Node Exporter¶
このドキュメントでは、ホストに Node Exporter コンポーネントをデプロイし、ホスト指標を収集して Datakit で収集・保存し、最後に Guance を使ってデータを可視化します。 Node Exporter は、ホストの CPU 使用率、メモリ使用状況、ディスク I/O、ネットワークトラフィックなどを含む、さまざまなシステム稼働指標を収集できます。
設定¶
前提条件¶
- datakit がインストールされていること
Node-Exporter を通じてホスト指標データを収集する¶
- DaemonSet 設定ファイル
node-exporter.yamlを作成する
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: node-exporter
namespace: monitor-sa
labels:
name: node-exporter
spec:
selector:
matchLabels:
name: node-exporter
template:
metadata:
labels:
name: node-exporter
spec:
hostPID: true # ホストの PID を使用
hostIPC: true # ホストの IPC を使用
hostNetwork: true # ホストのネットワークを使用
containers:
- name: node-exporter
image: quay.io/prometheus/node-exporter:v1.8.2
ports:
- containerPort: 9100
resources:
requests:
cpu: 0.15
securityContext:
privileged: true
args:
- --path.procfs
- /host/proc
- --path.sysfs
- /host/sys
- --collector.filesystem.ignored-mount-points
- '"^/(sys|proc|dev|host|etc)($|/)"'
volumeMounts:
- name: dev
mountPath: /host/dev
- name: proc
mountPath: /host/proc
- name: sys
mountPath: /host/sys
- name: rootfs
mountPath: /rootfs
tolerations:
- key: "node-role.kubernetes.io/master"
operator: "Exists"
effect: "NoSchedule"
volumes:
- name: proc
hostPath:
path: /proc
- name: dev
hostPath:
path: /dev
- name: sys
hostPath:
path: /sys
- name: rootfs
hostPath:
path: /
---
apiVersion: v1
kind: Service
metadata:
name: node-exporter
namespace: monitor-sa
spec:
type: ClusterIP
ports:
- name: http
port: 9100
protocol: TCP
targetPort: 31672
selector:
name: node-exporter
実行する
http://ホストip:31672/metrics にアクセスして、現在のホストで取得できるすべての監視データを確認します。
Datakit の設定¶
datakit.yamlファイルのConfigMapリソースにkubernetesprometheus.confを追加する
apiVersion: v1
kind: ConfigMap
metadata:
name: datakit-conf
namespace: datakit
data:
kubernetesprometheus.conf: |-
[inputs.kubernetesprometheus]
node_local = true # NodeLocal モードを有効にするかどうか。収集を各ノードに分散する
[[inputs.kubernetesprometheus.instances]]
role = "service" # 必須。service、pod、endpoints、node を設定可能
namespaces = ["monitor-sa"] # 任意。複数設定をサポートし、カンマ区切り。空の場合はすべてにマッチする
selector = "" # 任意。収集対象リソースの labels。収集対象の選択に使用する。空の場合はすべてにマッチする
scrape = "true" # 任意。収集スイッチ。デフォルトは true
scheme = "http"
port = "__kubernetes_service_port_%s_port "
path = "/metrics" # 任意。prometheus の収集パスの多くは /metrics。詳細は収集対象サービスの実際のメトリクス URL に従う
params = "" # 任意。http アクセスパラメータ。name=nginx&package=middleware のような文字列。必須ではない
interval = "30s" # 任意。収集頻度。デフォルトは 30s
[inputs.kubernetesprometheus.instances.custom]
measurement = "kube_nodeexporter" # 任意。Guance のメトリクス名。デフォルトではメトリクス名の最初のアンダースコア前の文字を使用する
job_as_measurement = false # 任意。データ内の job ラベル値をメトリクスセット名として使用するかどうか
[inputs.kubernetesprometheus.instances.custom.tags]
instance = "__kubernetes_mate_instance" # 任意。メトリクス tag
host = "__kubernetes_mate_host" # 任意。メトリクス tag
pod_name = "__kubernetes_pod_name" # 任意。メトリクス tag
pod_namespace = "__kubernetes_pod_namespace" # 任意。メトリクス tag。さらに追加可能。ここではグローバル tag と選出 tag は継承しない
cluster = "cluster01" # 任意
kubernetesprometheus.confをマウントするdatakit.yamlファイルのvolumeMountsに以下を追加する
- mountPath: /usr/local/datakit/conf.d/kubernetesprometheus/kubernetesprometheus.conf
name: datakit-conf
subPath: kubernetesprometheus.conf
readOnly: true
- datakit を再起動する 以下のコマンドを実行する
指標¶
node 指標セット¶
Node Exporter の指標は node 指標セットの下にあり、ここでは Node Exporter 指標に関する説明を紹介します。
| Metrics | 説明 | 単位 |
|---|---|---|
node_arp_entries |
ARP テーブル内のエントリ数 |
count |
node_boot_time_seconds |
システム起動以来の経過時間 |
s |
node_context_switches_total |
コンテキストスイッチの総回数 |
count |
node_cpu_guest_seconds_total |
CPU が仮想マシンまたはコンテナ上で他の OS を実行するために費やした時間の合計 |
s |
node_cpu_seconds_total |
CPU がユーザー態、システム態、アイドル態で費やした総時間 |
s |
node_disk_io_now |
実行中のディスク I/O 操作数 |
count |
node_disk_io_time_seconds_total |
ディスク I/O 操作に費やした総時間 |
s |
node_disk_io_time_weighted_seconds_total |
I/O 操作の待機時間の加重総時間 |
s |
node_disk_read_bytes_total |
ディスク読み取りの総バイト数 |
byte |
node_disk_read_time_seconds_total |
ディスク読み取りに費やした総時間 |
s |
node_disk_reads_completed_total |
完了したディスク読み取り操作の総回数 |
count |
node_disk_reads_merged_total |
マージされたディスク読み取り操作の総回数 |
count |
node_disk_write_time_seconds_total |
ディスク書き込みに費やした総時間 |
count |
node_disk_writes_completed_total |
完了したディスク書き込み操作の総回数 |
count |
node_disk_writes_merged_total |
マージされたディスク書き込み操作の総回数 |
count |
node_disk_written_bytes_total |
ディスクに書き込まれた総バイト数 |
byte |
node_entropy_available_bits |
利用可能なエントロピー量(暗号操作に使用) |
count |
node_filefd_allocated |
割り当て済みのファイルディスクリプタ数 |
count |
node_filefd_maximum |
ファイルディスクリプタの最大数 |
count |
node_filesystem_avail_bytes |
ファイルシステムで利用可能な空き容量のバイト数 |
byte |
node_ilesystem_device_error |
ファイルシステムデバイスエラーのカウント |
count |
node_filesystem_files |
ファイルシステム内のファイル数 |
count |
node_filesystem_files_free |
ファイルシステム内の空きファイル数 |
count |
node_filesystem_free_bytes |
ファイルシステムの空き容量のバイト数 |
byte |
node_filesystem_size_bytes |
ファイルシステムの総サイズ |
byte |
node_forks_total |
システムコール fork() の総回数 |
count |
node_intr_total |
総割り込み回数 |
count |
node_ipvs_backend_connections_active |
アクティブな IP 仮想サーバー数 |
count |
node_ipvs_backend_connections_inactive |
非アクティブな IPVS バックエンド接続数 |
count |
node_ipvs_connections_total |
IPVS の総接続数 |
count |
node_ipvs_incoming_bytes_total |
IPVS 経由で受信した総バイト数 |
byte |
node_ipvs_incoming_packets_total |
IPVS 経由で受信した総パケット数 |
count |
node_ipvs_outgoing_bytes_total |
IPVS 経由で送信した総バイト数 |
byte |
node_load1 |
直近 1 分間の平均負荷 |
count |
node_load15 |
直近 15 分間の平均負荷 |
count |
node_load5 |
直近 5 分間の平均負荷 |
count |
node_memory_Active_anon_bytes |
アクティブな匿名メモリ使用量のバイト数 |
byte |
node_memory_Active_bytes |
アクティブメモリ使用量のバイト数 |
byte |
node_memory_Active_file_bytes |
アクティブなファイルメモリ使用量のバイト数 |
byte |
node_memory_AnonHugePages_bytes |
匿名 HugePages メモリ使用量のバイト数 |
byte |
node_memory_Bounce_bytes |
メモリ bounce buffer の使用バイト数 |
byte |
node_memory_Buffers_bytes |
バッファメモリ使用量のバイト数 |
byte |
node_memory_Cached_bytes |
キャッシュ使用量のバイト数 |
byte |
node_memory_CmaFree_bytes |
CMA(予約済みカーネルメモリ)の空きバイト数 |
byte |
node_memory_CmaTotal_bytes |
CMA の総バイト数 |
byte |
node_memory_CommitLimit_bytes |
システムが割り当て可能なメモリのバイト数 |
byte |
node_memory_Committed_AS_bytes |
コミット済みメモリ使用量のバイト数 |
byte |
node_memory_DirectMap1G_bytes |
直接マップされた 1G メモリ領域のバイト数 |
byte |
node_memory_DirectMap2M_bytes |
直接マップされた 2M メモリ領域のバイト数 |
byte |
node_memory_DirectMap4k_bytes |
直接マップされた 4k メモリ領域のバイト数 |
byte |
node_memory_Dirty_bytes |
ダーティメモリ(ディスクへの書き戻しが必要なメモリ)のバイト数 |
byte |
node_memory_HardwareCorrupted_bytes |
ハードウェアにより破損したメモリのバイト数 |
byte |
node_memory_HugePages_Free |
空き HugePages メモリ数 |
count |
node_memory_HugePages_Rsvd |
予約済み HugePages メモリ数 |
count |
node_memory_HugePages_Surp |
HugePages メモリの surplus 数 |
count |
node_memory_HugePages_Total |
HugePages メモリの総数 |
byte |
node_memory_Hugepagesize_bytes |
各 HugePage のサイズ |
byte |
node_memory_Inactive_anon_bytes |
非アクティブな匿名メモリ使用量のバイト数 |
byte |
node_memory_Inactive_bytes |
非アクティブなファイルメモリ使用量のバイト数 |
byte |
node_memory_SReclaimable_bytes |
回収可能なスラブメモリ使用量のバイト数 |
byte |
node_memory_SUnreclaim_bytes |
回収不可能なスラブメモリ使用量のバイト数 |
byte |
node_memory_Shmem_bytes |
共有メモリ使用量のバイト数 |
byte |
node_memory_Slab_bytes |
slab が使用しているメモリバイト数 |
byte |
node_memory_SwapCached_bytes |
キャッシュされたスワップ領域使用量のバイト数 |
byte |
node_memory_SwapFree_bytes |
空きスワップ領域のバイト数 |
byte |
node_memory_SwapTotal_bytes |
総スワップ領域のバイト数 |
byte |
node_memory_Unevictable_bytes |
追い出し不可能なメモリ使用量のバイト数 |
byte |
node_memory_VmallocChunk_bytes |
vmalloc メモリチャンク使用量のバイト数 |
byte |
node_memory_VmallocTotal_bytes |
vmalloc メモリの総バイト数 |
byte |
node_memory_VmallocUsed_bytes |
使用中の vmalloc メモリのバイト数 |
byte |
node_memory_WritebackTmp_bytes |
書き戻し操作用の一時メモリ使用量のバイト数 |
byte |
node_memory_VmallocTotal_bytes |
vmalloc メモリの総バイト数 |
byte |
node_netstat_Icmp6_InErrors |
IPv6 ICMP エラーメッセージの受信数 |
count |
node_netstat_Icmp6_InMsgs |
IPv6 ICMP メッセージの受信数 |
count |
node_netstat_Icmp6_OutMsgs |
IPv6 ICMP メッセージの送信数 |
count |
node_netstat_Icmp_InErrors |
ICMP エラーメッセージの受信数 |
count |
node_netstat_Icmp_InMsgs |
ICMP メッセージの受信数 |
count |
node_netstat_Icmp_OutMsgs |
ICMP メッセージの送信数 |
count |
node_netstat_Ip6_InOctets |
受信した IPv6 データバイト数 |
byte |
node_netstat_Ip6_OutOctets |
送信した IPv6 データバイト数 |
byte |
node_netstat_IpExt_InOctets |
拡張 IPv4 の受信データバイト数 |
byte |
node_netstat_IpExt_OutOctets |
拡張 IPv4 の送信データバイト数 |
byte |
node_netstat_TcpExt_ListenDrops |
TCP リスンキューのあふれ回数 |
count |
node_netstat_TcpExt_ListenOverflows |
TCP リスンキューのあふれ回数。 |
count |
node_netstat_TcpExt_SyncookiesFailed |
SYN cookies の失敗回数 |
count |