ログメトリクス定義ファイル(fluentd_任意の名前_logmetrics.conf)
形式
## Input <worker ログメトリクス機能で使用するworkerのid> <source> @type prometheus bind バインド番号 port リッスンポート番号 metrics_path メトリクスパス </source> </worker> <worker workerのid> <source> @type tail path ログメトリクス機能の監視対象ログファイルの絶対パス tag 任意のタグの値 pos_file ../data/fluentd/tail/任意のタグの値.pos [ <parse> @type 正規表現タイプ expression ログメッセージの正規表現 time_key expressionで設定した時間の変数名 time_format time_keyのフォーマット types expression内で設定した変数名:型 </parse> ] </source> ## Output <match このmatchの適用対象とするtag> @type prometheus <metric> name 任意のログメトリクス名 type ログメトリクスタイプ desc ログメトリクスの説明 key ログからログメトリクスへの変換対象を判定するkey buckets histogramのbucket <labels> ラベルのキー ラベルの値 </labels> </metric> </match> </worker>
ファイル
fluentd_任意の名前_logmetrics.conf
任意の名前には,半角英数字,ハイフン,アンダースコアが使用できます。指定できる文字数は1〜30文字です。
格納先ディレクトリ
- Windowsの場合
-
- 物理ホストのとき
-
Agentパス\jp1ima\conf\user\
- 論理ホストのとき
-
共有フォルダ\jp1ima\conf\user\
- Linuxの場合
-
- 物理ホストのとき
-
/opt/jp1ima/conf/user/
- 論理ホストのとき
-
共有ディレクトリ/jp1ima/conf/user/
説明
監視対象のアプリケーションが出力するログを読み込み,ログメトリクスに変換するためのFluentdのメトリック定義ファイルです。ログメトリクス機能を使用する場合,このファイルを作成して配置します。
また,このファイルを読み込むためには,ログ監視対象定義ファイル(jpc_fluentd_common_list.conf)に「include」の設定を追加して,このファイルの名称を指定します。
文字コード
UTF-8(BOM無し)
改行コード
Windowsの場合:CR+LF
Linuxの場合:LF
定義の反映時期
Fluentdのサービスを再起動したときに,Fluentdの動作に反映します。
記述内容
- ・インプットプラグイン機能の定義
-
インプットプラグイン機能については,マニュアル「JP1/Integrated Management 3 - Manager 導入・設計ガイド」の「3.15.2(1)インプットプラグイン機能」を参照してください。
■Prometheusのスクレイプで利用する設定
「形式」に示す「## Input」の1つ目の<source>で設定します。
@typeにはprometheusを指定します。
- バインド番号(オプション)
-
Prometheusがこのプラグインのメトリクスをスクレイプする際にバインドするインターフェースを指定します。この項目が存在しない場合,デフォルトは「0.0.0.0」です。
- リッスンポート番号(必須)
-
Prometheusがこのプラグインのメトリクスをスクレイプする際に利用するリッスンポート番号「24820」を指定します。リッスンポート番号を変更したい場合は,別の値を指定します。
- メトリクスパス(オプション)
-
Prometheusがこのプラグインのメトリクスをスクレイプする際に利用するHTTPエンドポイントを指定します。この項目が存在しない場合,デフォルトは「/metrics」です。
指定できる文字数は1〜255文字です(先頭の「/」を含めない文字数)。
- ログメトリクス機能で使用するworkerのid(必須)
-
「■ログメトリクス機能の監視対象ログファイルの設定」で利用するworkerのworkerのidを指定します。
1つのworkerを指定する場合は<worker workerのid>とし,複数のworkerをまとめて範囲指定する場合は,<worker workerのid(最小の値)-workerのid(最大の値)>のように指定します。
■ログメトリクス機能の監視対象ログファイルの設定
「形式」に示す「## Input」の2つ目の<source>で設定します。
最初の@typeにはtail,<parse>の@typeにはログ監視機能のサポート範囲(regexp,syslog,csv,tsv,ltsv,multiline,noneのどれか)を指定します。
tailおよび<parse>の設定については,マニュアル「JP1/Integrated Management 3 - Manager 導入・設計ガイド」で,「3.15.3 JP1/IM - Agentによるログ監視機能」の「3.15.3(2)インプットプラグイン機能(Input Plugins)」を参照してください。
- 任意のタグの値(必須)
-
ドット「.」で区切られた文字列(例:myapp.access)を指定します。
使用できる文字は,小文字のアルファベット,数字,アンダースコアが使用できます。指定できる文字数は1〜30文字です。
- 正規表現タイプ(必須)
-
ログメトリクス機能の対象となるログファイルに関して,Fluentdに読み込む際のフォーマットを指定します。指定できるタイプを次に示します。
-
regexp
-
syslog
-
csv
-
tsv
-
ltsv
-
multiline
-
none
-
- ログメッセージの正規表現(必須またはオプション)
-
「正規表現タイプ」に「regexp」を指定した場合だけ,この設定項目を記述します。ここでは,ログメトリクス機能の対象として読み込みたいログメッセージの正規表現を指定します。正規表現の仕様は,Rubyの正規表現に準じます。
- expression内で設定した変数名(オプション)
-
「ログメッセージの正規表現」で抽出した数値データに関して,型を指定するために利用する変数名を指定します。
- 型(オプション)
-
「expression内で設定した変数名」で指定した変数名の型を指定します。指定できる型を,次に示します。
-
integer
-
float
-
- workerのid(必須)
-
「■Prometheusのスクレイプで利用する設定」で指定したログメトリクス機能で使用するworkerのidの中から,この<source>セクションにおいて,ログファイルの監視に利用するworkerのidを指定します。
- ・アウトプットプラグイン機能の定義
-
アウトプットプラグイン機能については,マニュアル「JP1/Integrated Management 3 - Manager 導入・設計ガイド」の「3.15.2(2)アウトプットプラグイン機能」を参照してください。
「形式」に示す「## Output」で設定します。
- <match このmatchの適用対象とするtag>〜</match>(オプション)
-
matchセクションでは,tagを指定すると,指定したtagが付与されたfluentdイベントに対してだけ,matchを適用できます。tagを指定しなかった場合は,すべてのfluentdイベントがmatchの適用対象となります。
半角英数字,ハイフン,アンダースコアが使用できます。指定できる文字数は1〜30文字です。
- <metric>〜</metric>
-
metricセクションでは,ログメトリクスの具体的な設定を行います。1つのmatchセクションに対して,複数のmetricセクションが定義可能です。
- 任意のログメトリクス名(必須)
-
Prometheusのメトリクスデータ名を指定します。
正規表現[a-zA-Z_:][a-zA-Z0-9_:]*に一致する必要があります。指定できる文字数は1〜255文字です。
- ログメトリクスタイプ(必須)
-
ログメトリクスのPrometheusでのメトリクスタイプ(counterまたはgauge)を指定します。
-
counter
単調に増加する値を持つメトリクスを表します。処理された要求の数,完了したタスク,エラーの数などを表すのに適しています。
Fluentdの再起動時にだけ,累積した値をリセットできます。
定義内のkeyが空の場合は,レコードの内容に関係なく,レコードの数だけ,メトリクスの値が1ずつ増加します。
値が減少する可能性のあるメトリクスの場合はgaugeを指定してください。
-
gauge
任意に上下できる値を持つメトリクスを表します。温度,現在のメモリ使用量,同時リクエスト数などを表すのに適しています。
-
- ログメトリクスの説明(必須)
-
ユーザー独自のメトリック定義のdescriptionで指定したログメトリクスの説明を記入します。
半角英数字,ハイフン,アンダースコアが使用できます。指定できる文字数は1〜255文字です。
- ログからログメトリクスへの変換対象を判定するkey(必須またはオプション)
-
ログメトリクスに変換する対象を判定するkeyを指定します。ログメトリクスタイプがcounterの場合はオプション,gaugeの場合は必須で指定します。
指定できる文字数は1〜255文字です。
- ラベルのキー(オプション)
-
Prometheusのメトリクスデータに付与するラベルのkeyを指定できます。
正規表現[a-zA-Z_:][a-zA-Z0-9_:]*に一致する必要があります。「__」で始めることはできません。指定できる文字数は1〜255文字です。
- ラベルの値(オプション)
-
ラベルのkeyに対する値を指定できます。
制御文字以外の任意のUnicode文字を指定できます。指定できる文字数は1〜255文字です。
文字列を指定した場合は,その文字列がそのままラベルの値となります。
ラベルのキーまたはラベルの値のどちらかが欠けている場合は,そのラベルは表示されません。
<labels>〜</labels>で示されるlabelsセクションは,metricセクションの内部または外部でそれぞれ定義できます。また,ラベル(ラベルのキーとラベルの値の1組)は複数設定できます。ラベルの詳細については,マニュアル「JP1/Integrated Management 3 - Manager 導入・設計ガイド」の「3.15.2 JP1/IM - Agentによるログメトリクス機能」の「3.15.2(3)(b)prometheus outputプラグイン」で,「ラベル」を説明している個所,および,「上位のラベルセクションとメトリクスセクション内のラベルセクション」を説明している個所を参照してください。
定義例
## Input <source> @type prometheus bind '0.0.0.0' port 24820 metrics_path /metrics </source> ##対象ログメッセージ1の抽出 <source> @type tail @id logmetrics_counter path /usr/lib/WebAppA/ControllerLog/ControllerLog.log tag WebAppA.Controller pos_file /posfile/WebAppA/ControllerLog.log.pos <parse> @type regexp expression /^(?<logtime>[^\[]*) \[(?<loglebel>[^\]]*)\] (?<class>[^\[]*) : endpoint "\/register" started. Target record: (?<record_num>\d[^\[]*).$/ time_key logtime time_format %Y-%m-%d %H:%M:%S types record_num:integer </parse> </source> ##対象ログメッセージ2の抽出 <source> @type tail @id logmeetrics_gauge path /usr/lib/WebAppA/GeneralLog/GeneralLog.log tag WebAppA.GeneralLog pos_file /posfile/WebAppA/GeneralLog.log.pos <parse> @type regexp expression /^(?<logtime>[^\[]*) \[(?<Status>[^\]]*)\] CPU Usage is (?<cpuvalue>\d[^%]*)%.$/ time_key logtime time_format %Y-%m-%d %H:%M:%S types cpuvalue:float </parse> </source> ## Output ##ログメトリクス1とログメトリクス2の定義 <match WebAppA.ControllerLog> @type prometheus <metric> name logmetrics_request_endpoint_register type counter desc The request number of endpoint register </metric> <metric> name logmetrics_num_of_registeredrecord type counter desc The number of registered record key record_num <labels> loggroup ${tag_parts[0]} log ${tag_parts[1]} </labels> </metric> </match> ##ログメトリクス3の定義 <match WebAppA.GeneralLog> @type prometheus <metric> name logmetrics_cpu_usage type gauge desc the CPU Usage of WebAppA. key cpuvalue <labels> loggroup ${tag_parts[0]} log ${tag_parts[1]} </labels> </metric> </match>