Hitachi

JP1 Version 13 JP1/Integrated Management 3 - Manager コマンド・定義ファイル・APIリファレンス


ログメトリクス定義ファイル(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(必須)

「■ログメトリクス機能の監視対象ログファイルの設定」で利用するworkerworkerのidを指定します。

1つのworkerを指定する場合は<worker workerのid>とし,複数のworkerをまとめて範囲指定する場合は,<worker workerのid(最小の値)-workerのid(最大の値)>のように指定します。

■ログメトリクス機能の監視対象ログファイルの設定

「形式」に示す「## Input」の2つ目の<source>で設定します。

最初の@typeにはtail<parse>@typeにはログ監視機能のサポート範囲regexpsyslogcsvtsvltsvmultilinenoneのどれか)を指定します。

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 20723
  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>