PDF

NetCrunch における Telegraf 経由の Linux Sysctl Filesystem 監視

このトピックでは、Telegraf を使用して Linux カーネルのファイルシステムパラメーターを監視し、収集したメトリクスを NetCrunch Telemetry Nodes に送信する方法について説明します。Linux Sysctl Filesystem input plugin は proc sys fs ディレクトリから値を読み取り、HTTP output plugin を使用して NetCrunch に転送します。

概要

Telegraf は、Linux Sysctl Filesystem input plugin を使用して Linux カーネルのファイルシステムパラメーターを収集できます。このプラグインは proc sys fs ディレクトリからメトリクスを読み取り、カーネルレベルのファイルシステムリソース使用状況を可視化します。プラグインには設定は不要で、利用可能なすべてのメトリクスを自動的に収集します。データは HTTP POST を使用して NetCrunch Telemetry Node エンドポイントに転送されます。

NetCrunch による Linux Sysctl Metrics のサポート

NetCrunch は、Telemetry Node エンドポイントを介して受信した sysctl filesystem メトリクスを受け取ります。Telemetry Nodes は JSON 形式のデータを受け入れ、収集した値をカウンターまたはアラートステータスとして保存します。

エンドポイント、その URL 形式、および認証方法については、 Monitoring with Telegraf で説明しています。以下では、Telemetry Node がすでに存在することを前提とします — テレメトリノード を参照してください。

データフロー

  1. Telegraf が proc sys fs からカーネルメトリクスを読み取ります。
  2. Telegraf がカーネルレベルのファイルシステム統計を収集します。
  3. Telegraf が JSON メトリクスを NetCrunch Telemetry Node エンドポイントに送信します。
  4. NetCrunch が収集したカウンターとステータス値を処理および保存します。

Telegraf の設定

主な設定ファイルの場所:

  • Linux パス:/etc/telegraf/telegraf.conf

基本設定

[agent] interval = "10s" flush_interval = "10s" metric_buffer_limit = 10000 debug = false

[[inputs.linux_sysctl_fs]]

[[outputs.http]] url = "https://gw.netcrunch.io/tm/v1/SRV-001@sensor01@node100/update" timeout = "5s" method = "POST" data_format = "json"

設定パラメーター

Agent Section

  • interval はメトリクスの収集頻度を設定します
  • flush_interval はデータの送信頻度を設定します
  • metric_buffer_limit は内部バッファーのサイズを設定します
  • debug は詳細な出力を有効にします

Linux Sysctl Filesystem Input

  • 設定は不要です
  • すべての filesystem sysctl メトリクスを自動的に収集します

HTTP Output

  • url は NetCrunch Telemetry Node エンドポイントを設定します
  • timeout はリクエストのタイムアウトを定義します
  • method は HTTP POST を指定します
  • data_format は JSON 出力を設定します

収集されるメトリクス

Linux Sysctl Filesystem plugin は、proc sys fs からカーネルレベルのファイルシステムメトリクスを収集します。

File Descriptor Metrics

file nr
割り当てられているファイルハンドルの数。

file max
Linux が割り当て可能なファイルハンドルの最大数。

Asynchronous IO Metrics

aio nr
現在の非同期 IO リクエスト数。

aio max nr
許可される同時非同期 IO リクエストの最大数。

Dentry Cache Metrics

dentry nr
使用中のディレクトリキャッシュエントリ数。

dentry unused nr
未使用のディレクトリキャッシュエントリ数。

dentry age limit
ディレクトリキャッシュエントリの有効期間の上限。

dentry want pages
dentry キャッシュに関連するメモリープレッシャーを示します。

Inode Metrics

inode nr
割り当てられている inode。

inode free nr
空き inode。

inode preshrink nr
次の縮小サイクルで解放される inode。

Disk Quota Metrics

dquot nr
割り当てられているディスククォータ構造体。

dquot max
ディスククォータ構造体の最大数。

Superblock Metrics

super nr
割り当てられているスーパーブロック。

super max
スーパーブロックの最大数。

メトリクスの解釈

ファイルハンドルの監視

ファイルハンドル枯渇のリスクを特定するため、file nr を file max と比較して監視します。file nr が file max に近づくと、新しいファイルの作成や接続の確立に失敗する可能性があります。

Dentry キャッシュの監視

  • dentry nr はアクティブなエントリ数を示します
  • dentry unused nr は再利用可能なエントリ数を示します
  • dentry want pages の値が高い場合は、ディレクトリキャッシュにメモリープレッシャーがかかっていることを示します

Inode の監視

  • inode nr は割り当てられている inode 数を示します
  • inode free nr は利用可能な inode 数を示します
  • 空き inode が少ないと、ファイルの作成がブロックされる可能性があります

非同期 IO の監視

  • aio nr はアクティブな非同期 IO 負荷を示します
  • 制限を検出するには、aio max nr と比較します

複数の出力先

メトリクスは複数の NetCrunch インスタンスに配信できます。

[agent] interval = "10s" flush_interval = "10s"

[[inputs.linux_sysctl_fs]]

[[outputs.http]] url = "https://gw.netcrunch.io/tm/v1/SRV-001@sensor01@node100/update" timeout = "5s" method = "POST" data_format = "json"

[[outputs.http]] url = "https://gw.netcrunch.io/tm/v1/SRV-002@sensor02@node200/update" timeout = "5s" method = "POST" data_format = "json"

[[outputs.http]] url = "https://gw.netcrunch.io/tm/v1/SRV-003@sensor03@node300/update" timeout = "5s" method = "POST" data_format = "json"

ユースケース

File Descriptor Capacity Monitoring

ハンドル枯渇によるサービス停止を防ぐため、ファイルハンドルの使用状況を追跡します。

Filesystem Cache Health Monitoring

メモリープレッシャーの発生を検出するため、dentry および inode メトリクスを監視します。

High Load Application Monitoring

データベースやサーバーなど、高スループットのアプリケーションについて非同期 IO メトリクスを追跡します。

Long Term Capacity Planning

inode およびファイルディスクリプターの使用状況の傾向を長期的に確認します。

Multi System Comparison

複数の Linux システム間でファイルシステムリソースの使用状況を比較します。

高度な設定

収集頻度を下げる

安定したシステムに適しています。

[agent] interval = "60s" flush_interval = "60s"

高頻度監視

変化の速いシステムに適しています。

[agent] interval = "5s" flush_interval = "5s"

Sysctl Metrics と他の Input の組み合わせ

[agent] interval = "10s" flush_interval = "10s"

[[inputs.linux_sysctl_fs]]

[[inputs.cpu]] percpu = false totalcpu = true

[[inputs.mem]]

[[inputs.disk]] ignore_fs = ["tmpfs", "devtmpfs"]

[[inputs.diskio]]

[[outputs.http]] url = "https://gw.netcrunch.io/tm/v1/SRV-001@sensor01@node100/update" timeout = "5s" method = "POST" data_format = "json"

まとめ

Linux Sysctl Filesystem input plugin は、設定なしでカーネルレベルのファイルシステムメトリクスを提供します。Telegraf は、ファイルディスクリプターメトリクス、inode 数、dentry キャッシュの詳細、非同期 IO 統計、スーパーブロックメトリクス、クォータメトリクスを収集し、NetCrunch Telemetry Nodes に転送します。そこで、それらを監視、グラフ化し、アラートの対象にできます。

aiodentryfile descriptorfilesysteminodekernellinuxprocpushsysctltelegraftelemetry node