Prometheus + mtail で簡単なログ収集をしてみる

やること

prmetheusとmtailを一台のインスタンスに入れて、mtailで/var/log/messagesの行数をカウントした結果をprometheusのメトリクスとして収集してみる。

mtailを初めて使うので、mtailの使い方を調べながら。

環境

  • Instance: t2.micro
  • OS: centos7
  • Prometheus: 2.01
  • mtail: 3.0.0

mtailの準備

何も無い状態からはじめます。

Goのインストール

まずは、Goのインストール(1.7以上)

GOPATHの設定・作成

sudo su -

.bash_profileを編集する

vi .bash_profile
#以下の二行を追加する
export GOPATH=$HOME/go
PATH=$PATH:$HOME/bin:$GOPATH/bin

.bash_profileの読み込み

source ~/.bash_profile

GOPATHは以下にsrcディレクトリの作成

mkdir -p $GOPATH/src

Goとgitをインストールする

cd $GOPATH/src
yum install go git
go get github.com/google/mtail
cd github.com/google/mtail
make

プログラムファイルの作成

mtailの動作設定ファイルであるプログラムファイルを作成する。
まず、プログラムファイル格納用のディレクトリを作成する
どこでもよいですが、公式を参考に/etcの下に作成。

mkdir /etc/mtail

複雑な記載が可能ですが、今回はもっともシンプルなプログラムファイルを作成します。
あるログファイルの行数をカウントするだけのプログラムファイル。
対象のログファイルはmtail起動時に指定する。
このとき、line_countがPrometheus上で表示されるメトリクス名になります。

cd /etc/mtail
vim test.mtail
# simple line counter
counter line_count
/$/ {
  line_count++
}

mtail実行

作成したプログラムファイルを読み込むように、mtailを起動する。
-progsで読み込むプログラムファイルを指定
-logsで参照するログファイルを指定
ちなみに、プログラムファイルの修正は動的に反映されます。mtailプロセスの再起動は必要ありません。

# /var/log/messages を対象に、行数カウントのプログラムファイルを指定してmtailを起動
mtail -progs /etc/mtail/test.mtail -logs /var/log/messages &

mtailが出力するメトリクスの取得には、mtailのエンドポイントに3903ポートでアクセスすれば参照可能です。
json,prometheus,varz形式のデータで出力されています。

mtailの素の画面はこんな感じ

xx.xx.xx.xx:3903にアクセスした画面

ScreenShot 1.JPG

mtail on :3903
Build: mtail version v3.0.0-rc5-48-g6e17f80 git revision 6e17f8086ba73fe59c17e2156417bffdc4015d13 go version go1.8.3

Metrics: json, prometheus, varz

Debug: debug/pprof, debug/vars

Program Loader
test.mtail

No compile errors

Total load errors ; successes: 1

Log Tailer
/var/log

/var/log/messages

json形式

xx.xx.xx.xx:3903/json

[
  {
    "Name": "line_count",
    "Program": "test.mtail",
    "Kind": 1,
    "Type": 0,
    "LabelValues": [
      {
        "Value": {
          "Value": 0,
          "Time": 0
        }
      }
    ]
  }
]

prometheusフォーマット

xx.xx.xx.xx:3903/metrics

# TYPE line_count counter
# line_count defined at test.mtail:2:9-18
line_count{prog="test.mtail"} 2

問題なくmtailが起動したので、次はprometheusの準備

Prometheusの準備

監視対象を追加

mtailのエンドポイントをPrometheusが参照するように、Prometheusの設定ファイルprometheus.ymlを修正します。
デフォルトのprometheus.ymlに、localhost:3903のジョブを追加します。

    static_configs:
      - targets: ['localhost:9090']
      - targets: ['localhost:3903'] ←追加した行

設定ファイル修正後、Prometheusを起動して、メトリクスを収集できているかを確認します。

cd ~
cd prometheus-2.1.0.linux-amd64
./prometheus &

prometheusのtargetsの画面
xx.xx.xx.xx:9090にアクセスして確認
ScreenShot.JPG

メトリクスの確認

graphでline_counterメトリクスの値を表示して見る
loggerでテストメッセージを/var/log/messasgesに出力してカウント値が増えるか確認。
行数3でスタートして、loggerで適当に出力して、4,5と増えることを確認した。
ScreenShot 2.JPG

以上

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.