node_exporterのインストール

node_exporterのインストール

node_exporterってなんや

node_exporter は、システムのハードウェアおよびオペレーティングシステムのメトリクスを収集し、Prometheus によって監視されるようにするためのエクスポーターです。Prometheus は、オープンソースのシステムモニタリングおよびアラートツールキットで、時間ベースのデータを収集し、クエリおよび可視化するために使用されます。

node_exporter の役割と機能

node_exporter は、以下のようなさまざまなシステムメトリクスを収集します。

  • CPU 使用率: 各 CPU コアの使用率を詳細にレポートします。
  • メモリ使用量: システムのメモリ使用量、スワップ使用量などをレポートします。
  • ディスク I/O: ディスクの読み書き速度、ディスクの使用量を監視します。
  • ネットワーク I/O: ネットワークインターフェースの送受信バイト数、パケット数などを収集します。
  • ファイルシステム: 各ファイルシステムの使用量、空き容量をレポートします。
  • システムロード: システムの平均負荷を収集します。
  • その他: システムのブート時間、稼働時間、コンテキストスイッチの数など、多くのシステム情報を収集します。
  • これらのメトリクスを Prometheus によって収集し、長期間のトレンド分析やアラート設定に利用します。たとえば、サーバーの CPU 使用率が異常に高くなった場合や、ディスクの空き容量が少なくなった場合にアラートを送ることができます。

    典型的な使用例

  • システム監視: システムのパフォーマンスやリソース使用量をリアルタイムで監視し、異常が発生した際にすぐに対応できるようにします。
  • 容量計画: ディスク容量やメモリの使用量を監視し、将来的なリソース不足を予測して計画的な増設を行います。
  • トラブルシューティング: 過去のメトリクスを分析して、システムパフォーマンスの問題や障害の原因を特定します。
  • 動作の仕組み

  • データ収集node_exporter は、システムのメトリクスを収集し、HTTP サーバーとして動作してメトリクスをエクスポートします。デフォルトでは、ポート 9100 でメトリクスを提供します。
  • Prometheus のスクレイピング: Prometheus は、設定ファイルに基づいて定期的に node_exporter からメトリクスをスクレイピングします。
  • データの保存とクエリ: スクレイピングされたメトリクスデータは、Prometheus の時系列データベースに保存され、後でクエリや分析に使用されます。
  • メトリクスの例

    以下は、node_exporter が提供するメトリクスの一部の例です。

    plaintextコードをコピーする
    # HELP node_cpu_seconds_total Seconds the CPUs spent in each mode.
    # TYPE node_cpu_seconds_total counter
    node_cpu_seconds_total{cpu="0",mode="idle"} 1.8267178e+07
    node_cpu_seconds_total{cpu="0",mode="system"} 7462.62
    node_cpu_seconds_total{cpu="0",mode="user"} 5417.4
    
    # HELP node_memory_MemAvailable_bytes Memory information field MemAvailable_bytes.
    # TYPE node_memory_MemAvailable_bytes gauge
    node_memory_MemAvailable_bytes 3.034669e+09
    
    # HELP node_disk_io_time_seconds_total Total seconds spent doing I/Os.
    # TYPE node_disk_io_time_seconds_total counter
    node_disk_io_time_seconds_total{device="sda"} 31207.72
    
    # HELP node_network_receive_bytes_total Network device statistic receive_bytes.
    # TYPE node_network_receive_bytes_total counter
    node_network_receive_bytes_total{device="eth0"} 1.8575856e+07
    
    

    これらのメトリクスを使用して、システムの状態を詳細に監視することができます。

    インストールしてみる

    超簡単var(dockerを使用する)

    このコマンドを実行するだけ

    一旦使ってみたい時に

    docker run -d --name=node_exporter -p 9100:9100 prom/node-exporter

    インストール手順

    1. node_exporter のバイナリをダウンロード

    最新バージョンの node_exporter バイナリを Prometheus の公式 GitHub リリースページからダウンロードします。

    # 最新のバージョンをダウンロード
    wget https://github.com/prometheus/node_exporter/releases/latest/download/node_exporter-*.linux-amd64.tar.gz
    
    # ダウンロードしたファイルを展開
    tar xvfz node_exporter-*.linux-amd64.tar.gz
    
    # 展開したディレクトリに移動
    cd node_exporter-*.linux-amd6

    2. node_exporter バイナリを移動

    node_exporter バイナリを適切な場所に移動します。通常は /usr/local/bin などに配置します。

    sudo cp node_exporter /usr/local/bin/

    3. node_exporter ユーザーを作成

    セキュリティ上の理由から、専用のユーザーを作成して node_exporter を実行するのが一般的らしいです

    sudo useradd -rs /bin/false node_exporter

    4. システムサービスファイルを作成

    node_exporter をシステムサービスとして登録するためのファイルを作成します。

    sudo tee /etc/systemd/system/node_exporter.service << EOF
    [Unit]
    Description=Prometheus Node Exporter
    Wants=network-online.target
    After=network-online.target
    
    [Service]
    User=node_exporter
    Group=node_exporter
    Type=simple
    ExecStart=/usr/local/bin/node_exporter
    
    [Install]
    WantedBy=multi-user.target
    EOF

    5. node_exporter サービスの起動と有効化

    作成したサービスファイルを使って node_exporter を起動し、自動起動を有効にします。

    # デーモンをリロード
    sudo systemctl daemon-reload
    
    # node_exporter を起動
    sudo systemctl start node_exporter
    
    # 自動起動を有効化
    sudo systemctl enable node_exporter

    6. 動作確認

    node_exporter が正しく動作しているかを確認します。

    # サービスのステータスを確認
    sudo systemctl status node_exporter
    
    # メトリクスが収集されているかを確認(デフォルトではポート9100で提供されます)
    curl http://localhost:9100/metrics

    インストールと実行は完了です。

    Prometheus サーバーに node_exporter のエンドポイントを追加することで、システムメトリクスを収集できるようになります。

    ← Go home