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 がすでに存在することを前提とします — テレメトリノード を参照してください。
データフロー
- Telegraf が proc sys fs からカーネルメトリクスを読み取ります。
- Telegraf がカーネルレベルのファイルシステム統計を収集します。
- Telegraf が JSON メトリクスを NetCrunch Telemetry Node エンドポイントに送信します。
- 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 に転送します。そこで、それらを監視、グラフ化し、アラートの対象にできます。
- NetCrunchにおけるノードとは?
NetCrunchにおけるノードの定義について説明します。ノードが物理デバイスではなくサービスエンドポイントとして扱われる理由、そしてこの区別が最新のインフラストラクチャにおける監視精度をどのように向上させるかを説明します。
- NetCrunch データ形式について
- Monitoring External Sources
How NetCrunch monitors data originating outside built-in collectors using telemetry, scripts, files, and external APIs.
- NetCrunch Native Data Formats
Native payload formats used by NetCrunch to ingest external monitoring data as counters, statuses, and contextual data objects using JSON, XML, and CSV.
- NetCrunchのテレメトリ
テレメトリを使用すると、システムはポーリングなしでメトリックとログをNetCrunchに送信できます。このトピックでは、テレメトリを使用するタイミングと、NetCrunchがテレメトリノードとOTLPクラウドゲートウェイ経由でどのようにテレメトリをサポートするかについて説明します。
- テレメトリノード
テレメトリノードは、RESTまたは OTLP経由で外部システムからメトリック、ステータス、イベントを受信するためのNetCrunchノードタイプです。クラウド、IoT、カスタムシステムのテレメトリデータをアンカーし、イベント対応設計に置き換えられたノードです。
- Monitoring with Telegraf
Use Telegraf, the open-source metrics agent, to collect from systems NetCrunch does not poll directly and push the results into NetCrunch as ordinary counters and statuses.
- NetCrunch で Telegraf を介して MQTT Telemetry を使用する
このトピックでは、MQTT を介して公開されたシステムメトリックを収集し、Telegraf を使用して処理した後、JSON ベースのテレメトリデータとして NetCrunch Telemetry Node エンドポイントに転送する方法について説明します。
- NetCrunch における Telegraf 経由の SQL Server Monitoring
このトピックでは、Telegraf を構成して Microsoft SQL Server のメトリックを収集し、JSON ベースのテレメトリデータを使用して NetCrunch Telemetry Node エンドポイントに転送する方法について説明します。SQL Server のログイン設定、接続文字列、Telegraf の入力構成、およびサポートされるメトリックタイプについて説明します。
- NetCrunch における Telegraf を使用した Azure Resource の監視
このドキュメントでは、Telegraf を構成してさまざまな Azure Resource(Virtual Machines、Storage Accounts、Databases など)からメトリックを収集し、Telemetry Node endpoint を介して NetCrunch に送信する方法について説明します。