コンテンツにスキップ

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

実行する

kubectl create ns monitor-sa
kubectl apply -f node-exporter.yaml

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 を再起動する 以下のコマンドを実行する
kubectl delete -f datakit.yaml
kubectl apply -f datakit.yaml

指標

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

フィードバック

このページは役に立ちましたか?