NetCrunch における Telegraf 経由の NGINX 監視
このドキュメントでは、Telegraf を設定して NGINX メトリクスを収集し、Telemetry Node エンドポイントを介して NetCrunch に送信する方法について説明します。
概要
Telegraf は、組み込みの NGINX input plugin を使用して NGINX サーバーのメトリクスを収集できます。データは、Telemetry Node エンドポイントへの HTTP POST を介して NetCrunch に転送されます。
NetCrunch による NGINX Telemetry のサポート
NetCrunch は、Telemetry Node REST エンドポイントを介して Telegraf からデータを受信します。Telemetry Node は JSON 形式のデータを受け入れ、受信した値をカウンターまたはアラートステータスとして保存します。
サポートされるエンドポイント
クラウド REST エンドポイント:
https://gw.netcrunch.io/tm/v1/<serverId>@<sensorId>@<nodeId>/update
ローカル REST エンドポイント:
<NetCrunch-WebServer>/api/rest/1/sensors/<sensorId>@<nodeId>/update
クラウドエンドポイントの例:
https://gw.netcrunch.io/tm/v1/SRV-001@sensor01@node100/update
データは、application/json コンテンツタイプを使用する HTTP POST メソッドで送信されます。Telemetry Node は NetCrunch 構造内に論理的に存在するため、IP 検出は必要ありません。
データフロー
Telegraf による NGINX 監視は、次のプロセスに従います。
-
NGINX ステータスの公開 — NGINX は、stub_status モジュールのエンドポイントを介してメトリクスを公開します。
-
Telegraf による収集 — Telegraf NGINX input plugin は、一定の間隔でステータスエンドポイントにクエリを実行します。
-
データ転送 — Telegraf は、収集したメトリクスを HTTP POST を介して NetCrunch Telemetry Node に転送します。
-
NetCrunch による処理 — Telemetry Node は受信したメトリクスを関連付け、カウンターまたはアラートステータスとして保存します。
NGINX の設定
メトリクスを公開するには、stub_status モジュールを有効にします。
設定例
NGINX 設定ファイル(例: /etc/nginx/nginx.conf または /etc/nginx/sites-available/default)に追加します。
server { listen 127.0.0.1:80; server_name localhost;location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; deny all; }}
NGINX をリロードします。
nginx -t systemctl reload nginx
ステータスエンドポイントを確認します。
curl http://127.0.0.1/nginx_status
期待される出力:
Active connections: 45 server accepts handled requests 657 657 1126 Reading: 0 Writing: 36 Waiting: 9
Telegraf の設定
主要な設定ファイルは /etc/telegraf/telegraf.conf です。
基本設定
[agent] interval = "30s" flush_interval = "30s" debug = false quiet = true[[inputs.nginx]] urls = ["http://127.0.0.1/nginx_status"] response_timeout = "5s"
[[outputs.http]] url = "https://gw.netcrunch.io/tm/v1/SRV-001@sensor01@node100/update" method = "POST" data_format = "json" content_encoding = "identity" [outputs.http.headers] Content-Type = "application/json"
設定パラメーター
Agent セクション:
- interval — メトリクスの収集頻度
- flush_interval — データを outputs に送信する頻度
- debug — 詳細なログを有効にする
- quiet — エラー以外のメッセージを抑制する
NGINX Input:
- urls — クエリ対象となる NGINX ステータスエンドポイントのリスト
- response_timeout — 応答を待機する最大時間
HTTP Output:
- url — NetCrunch Telemetry Node エンドポイント
- method — HTTP メソッド(POST)
- data_format — 出力形式(JSON)
- content_encoding — エンコーディングタイプ
- headers — コンテンツタイプを含む HTTP ヘッダー
収集されるメトリクス
NGINX input plugin は、次のメトリクスを収集します。
Active Connections:
- nginx_active — アクティブなクライアント接続数
Server Metrics:
- nginx_accepts — 受け入れたクライアント接続の合計数
- nginx_handled — 処理した接続の合計数
- nginx_requests — クライアントリクエストの合計数
Connection States:
- nginx_reading — リクエストヘッダーを読み取っている接続数
- nginx_writing — クライアントへの応答を書き込んでいる接続数
- nginx_waiting — リクエストを待機しているアイドル接続数
高度な設定
複数の NGINX インスタンス
複数の NGINX サーバーを監視します。
[[inputs.nginx]] urls = [ "http://server1.local/nginx_status", "http://server2.local/nginx_status", "http://server3.local/nginx_status" ] response_timeout = "5s"
カスタムタグの追加
追加のメタデータを含めます。
[[inputs.nginx]] urls = ["http://127.0.0.1/nginx_status"] response_timeout = "5s" [inputs.nginx.tags] environment = "production" datacenter = "dc01"
HTTPS エンドポイント
HTTPS 経由で NGINX ステータスを取得する場合:
[[inputs.nginx]] urls = ["https://server.local/nginx_status"] response_timeout = "5s" insecure_skip_verify = false # tls_ca = "/path/to/ca.crt"
ユースケース
Web サーバーのパフォーマンス監視
接続処理能力を追跡し、高トラフィックの Web サーバーにおけるパフォーマンスのボトルネックを特定します。
ロードバランサーのヘルスチェック
リバースプロキシまたはロードバランサーとして動作する NGINX インスタンスを監視し、リクエストが適切に分散されていることを確認します。
マイクロサービスゲートウェイの監視
マイクロサービスのトラフィックを処理する NGINX API ゲートウェイからメトリクスを追跡します。
複数インスタンスの監視
異なるサーバーまたはコンテナーに分散された複数の NGINX インスタンスからメトリクスを収集します。
まとめ
Telegraf は、stub_status モジュールを介して NGINX と簡単に統合できます。メトリクスは一定の間隔で収集され、集中監視とアラートのために NetCrunch Telemetry Nodes に転送されます。この方法により、SNMP 設定が不要になり、NGINX のパフォーマンスをリアルタイムで可視化できます。
主な機能: - NGINX メトリクスのリアルタイム収集 - 複数の NGINX インスタンスのサポート - NetCrunch Telemetry Nodes による集中監視 - NetCrunch サーバーからのポーリングが不要
関連項目
Telegraf Integration with NetCrunch
Telegraf を NetCrunch Telemetry Nodes とともに使用するための完全なガイドです。
Telemetry Node
REST または OTLP を介して外部メトリクスとイベントを受信するために設計された仮想ノードタイプです。
Understanding NetCrunch Data Formats
NetCrunch が受け入れる JSON、XML、CSV 形式について詳しく説明します。
Sending Data to NetCrunch
REST API、OTLP gateway、ファイルベースセンサーを使用して NetCrunch にデータを送信するためのガイドです。