やること
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にアクセスした画面
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にアクセスして確認
##メトリクスの確認
graphでline_counter
メトリクスの値を表示して見る
loggerでテストメッセージを/var/log/messasgesに出力してカウント値が増えるか確認。
行数3でスタートして、loggerで適当に出力して、4,5と増えることを確認した。
#以上