「がとらぼ」ではホスト(サーバ)からの情報収集にcollectdを使ってたけど、collectdばかりでは面白くないのでElastic社の軽量エージェントBeatsも使ってみたいかなと。
Beatsはいろいろな機能別beatのシリーズ名みたいなものなのでBeatsという名前のアプリがあるわけではない。今回はログファイルを監視して追加されたログ(行)を送信するFilebeatをNanoPi NEO2 (arm64)用にビルドしてみたい。
ちなみにcollectdでログファイルを監視するならtailプラグインが似たようなもの。ただし、collectdでは基本的に(絶対的に?)文字列の値は送れなくて該当するログの行のカウントや数値だけなので文字列の値(ログそのもの)を送りたいならcollectdは外れるかな。
以下、コマンドの前(行頭)が $ のコマンドは一般ユーザーで実行、 # のコマンドは管理者として実行。(コマンドの前に sudoを付けるか su - でrootになってから実行)
また、この記事ではNanoPi NEO2のOSはarmbianのdebian stretch。違うディストリビューションでは標準で入っているパッケージがarmbianとは違うかもしれないので必要に応じて足す。
ビルド準備
BeatsはGo言語で書かれているということなので先ずはGoのインストール。
# apt-cache search golang # apt install golang-go
apt-cache searchでGo言語のパッケージ名のキーワードとして golang を探す。表示されたリストにそれらしきパッケージ名が存在すればOK.
apt-get install でパッケージ名を指定してインストール。
~/.bashrc (追記)
export GOPATH=$HOME/.go
GOPATHを指定しておく。場所はどこでも良いので今回は自身のユーザーディレクトリ下の.goということにする。ディレクトリそのものは後で勝手に作られる(筈)。
Beatsの入手
$ go get github.com/elastic/beats $ cd ~/.go/src/github.com/elastic/beats $ cd filebeat $ git checkout v5.6.7 (または最新v6.2.2ならgit checkout v6.2.2)
ビルドとインストール
上から引き続きで実行$ GOARCH=arm64 go build $ cp -p filebeat /usr/local/bin/ # cp filebeat.yml /etc/ # mkdir /var/log/filebeat # mkdir /var/lib/filebeat
FreeBSDに慣れてるので/usr/local/bin にしたけどfilebeatの置き場所は好みで。下のサービス設定用ファイルのfilebeatのpathも置き場所に合わせる。
/lib/systemd/system/filebeat.service (新規)1 2 3 4 5 6 7 8 9 10 11 12 | [Unit]
Description=filebeat
Documentation=https://www.elastic.co/guide/en/beats/filebeat/5.6/index.html
Wants=userwork-online.target
After=network-online.target
[Service]
ExecStart=/usr/local/bin/filebeat -c /etc/filebeat.yml -path.data /var/lib/filebeat -path.logs /var/log/filebeat
Restart=always
[Install]
WantedBy=multi-user.target
|
設定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | ### 入力 ###
filebeat.prospectors:
-
input_type: log
paths:
- /var/log/*.log
### 出力 ###
#elasticsearhに送る場合 (送信先 ホスト192.168.0.2 ポート9200)
#output.elasticsearch:
# hosts: ["192.168.0.2:9200"]
#logstashに送る場合 (送信先 ホスト192.168.0.2 ポート5043)
output.logstash:
hosts: ["192.168.0.2:5043"]
|
テストなので/var/logにあるファイル名が.logで終わるファイル全部を監視する。
Filebeat起動
# systemctl enable filebeat.service #←サービスを有効化 (最初の1回のみ) # service filebeat start #←サービスを開始
データ受信側 Logstashの設定
/usr/local/etc/logstash/test.conf (テスト用設定ファイル)1 2 3 4 5 6 7 8 9 10 11 | input {
beats {
port => 5043
}
}
output {
stdout {
codec => rubydebug
}
}
|
テスト用Logstashの実行
# /usr/local/logstash/bin/logstash --path.data /tmp -f /usr/local/etc/logstash/test.conf
既に動いているLogstashと別にLogstashを実行するときは--path.data でどこか書き込み可能なディレクトリを指定する。
コマンド実行から暫くは反応が無いように見えるかもしれないけど待っていればlogstashのメッセージの後にfilebeatからのデータが表示されるようになる筈。
なお、ログの表示が停まった場合はログが追加されるようなこと(例えばNanoPi NEOにログインし直すなど)をすると新たなログの行が追加されてそれが表示される(筈)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | {
"@timestamp" => 2018-02-27T11:55:04.563Z,
"offset" => 77635,
"@version" => "1",
"input_type" => "log",
"beat" => {
"name" => "nanopineo2",
"hostname" => "nanopineo2",
"version" => "5.6.7"
},
"host" => "nanopineo2",
"source" => "/var/log/auth.log",
"message" => "Feb 27 11:55:01 localhost CRON[1753]: pam_unix(cron:session): session opened for user root by (uid=0)",
"type" => "log",
"tags" => [
[0] "beats_input_codec_plain_applied"
]
}
|
こんな感じのが次々に出力される。
関連記事:- TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (後編)
- TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (中編)
- TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (前編)
- Metricbeatで収集したメトリクスデータをKibanaで可視化する
- Kibanaを操作する前にユーザーを作成する
- Metricbeat 8.6.0のインストールと設定
- Elastic Stack 8系をFreeBSDにインストール
- アッチッチなNanoPi NEO3を冷やしたい パッド交換
- NanoPi NEO3冷却力強化後のUnixBench
- アッチッチなNanoPi NEO3を冷やしたい
- NTPサーバの時刻ソースに対するズレの調整
- NanoPi NEO3をv6プラスのルーターにする systemd-networkd + nftables
- NanoPi NEO3のUSB3.0ポートのネットワーク速度
- NanoPi NEO3でArmbian よきところでUnixBench
- NanoPi NEO3が届いた
- NanoPi NEOにRTCモジュールを付ける
- 新しい中華GPSモジュールとChronyで作るNTPサーバ (中編)
- 新しい中華GPSモジュールとChronyで作るNTPサーバ (前編)
- Prometheus2とGrafana6によるシステム監視 シングルボードコンピュータの温度表示
- NanoPi NEOでNTPサーバ再構築 (全まとめ)
- Elastic Stack 6.4.2への更新 FreeBSD ports用メモ
- WinlogbeatでWindowsイベントログを可視化 後編
- WinlogbeatでWindowsイベントログを可視化 中編
- WinlogbeatでWindowsイベントログを可視化 前編
- Elastic Stackを6.3.2に更新する
- NanoPi NEO2をv6プラスのルーターにする 後編
- NanoPi NEO2をv6プラスのルーターにする 前編
- Elastic Stackでシステム監視 Heartbeatで収集した死活情報をKibanaで可視化
- Elastic Stackでシステム監視 Heartbeatを使う準備
- Elastic Stackでシステム監視 FreeBSDのportsで6.2.3に更新