概要
grok_exporterを使ってみる
- 対象のバージョンは、grok_exporter-1.0.0.RC3 (現時点の最新)
- exampleで確認
grok_exporterとは?
- 任意の非構造化ログデータから、Prometheusのメトリクスをエクスポートする
- 非構造化ログデータをパースするのにGrokを使う
インストール
$ cd /opt/prometheus $ sudo wget https://github.com/fstab/grok_exporter/releases/download/v1.0.0.RC3/grok_exporter-1.0.0.RC3.linux-amd64.zip $ sudo unzip grok_exporter-1.0.0.RC3.linux-amd64.zip $ sudo ln -s grok_exporter-1.0.0.RC3.linux-amd64 grok_exporter
フォルダの中身
grok_exporter //本体 example/ //grok_exporterを理解するためのサンプル pattens/ //grokのパターンファイル置き場
example
このサンプルでは、サンプルログ example/exim-rejected-RCPT-examles.log をconfig.yml に従ってパースし、Prometheusのメトリクスにする。
設定ファイル
global: config_version: 3 input: type: file path: ./example/exim-rejected-RCPT-examples.log readall: true imports: - type: grok_patterns dir: ./patterns grok_patterns: - 'EXIM_MESSAGE [a-zA-Z]*' metrics: - type: counter name: exim_rejected_rcpt_total help: Total number of rejected recipients, partioned by error message match: '%{EXIM_DATE} %{EXIM_REMOTE_HOST} F=<%{EMAILADDRESS}> rejected RCPT <%{EMAILADDRESS}>: %{EXIM_MESSAGE:message}' labels: error_message: '{{.message}}' logfile: '{{base .logfile}} server: protocol: http port: 9144
パラメータについてのさらっとした説明(恐らく)
- input: -> readall: trueはファイルの先頭から読み込む(検証、デバッグならこっち)、falseは新しい行から読む(運用ならこっち)
- imports: 定義済みのgrok_patternsを使う場合。入れておけばいい。
- grok_patterns: ここにカスタムのGROKパターン(正規表現)を直書きできる。patterns/ 配下にファイルを作ってそこに書いてもいい。
- metrics: 読み込んだログ行を変数(メトリクス)に入れるところ
- name: 変数名(メトリクス名)
- match: ここが取りたいログの正規表現を作るところ。%{PATTERN: message} のようにすると、以降のlabelsで .message で呼び出せる
- labels: メトリクス内のラベル
- logfile: '{{base. logfile}} logifleは、GROKパターンに依存しないラベル変数でファイルのフルパスを表す。base はGoテンプレート関数でフルパスのうちファイル名を取り出すもの。いずれもマニュアルに書かれている。
match: について
match: '%{EXIM_DATE} %{EXIM_REMOTE_HOST} F=<%{EMAILADDRESS}> rejected RCPT <%{EMAILADDRESS}>: %{EXIM_MESSAGE:message}'
- EXIM_DATE、EXIM_REMOTE_HOSTは、patterns/exim に定義されている
- EMAILADDRESSは、patterns/grok_patterns に定義されている
- EXIM_MESSAGEは、config.ymlのgrok_patterns に定義したもの
実行する
./grok_exporter -config example/config.yml
実行結果を確認する
http://localhost:9144/metrics にアクセスすると、以下のように表示される
exim_rejected_rcpt_total {error_message="Sender verify failed"} 2000 exim_rejected_rcpt_total {error_message="Unrouteable address"} 32 exim_rejected_rcpt_total {error_message="relay not permitted"} 165