ELK Stackのインストールの実質的な続き
監視対象ホストからELKスタックの入っている監視用サーバにデータを送る方法としてはいろいろあるけど今回はエージェントとしてcollectdを使うことにする。依存関係を満たすために余計ソフトウエアを大量にインストールされるのが嫌なのと簡単だからという理由でcollectdを採用したけど、流行りなのはbeatsとかかも。Perlをインストール済みならcollectd、Go言語をインストール済みならbeatsでどうぞ。
collectdのインストール
# cd /usr/ports/net-mgmt/collectd5 # make install clean または # pkg install net-mgmt/collectd5
せっかくportsでインストールするならconfigオプションで追加で欲しい機能に関係する項目にもチェックする。例えばCURLにチェックしてビルドするとApacheやNginxプラグインでアクセス状況を収集できるようになる。逆にCURLにチェックしないでビルドするとApache, Nginxプラグインは利用できない。configオプションの画面にアドバイスがあるので良く見ておく。
なので、pkgでインストールすると使えないプラグインが多々。cillectdでいろいろな情報を収集するならports推奨。
collectdの設定
/usr/local/etc/collectd.conf1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | Hostname "hoge.example.com" #collectdを入れたホストの名前等
LoadPlugin df #ディスク使用量
LoadPlugin interface #ネットワークIF
LoadPlugin load #ロードアベレージ
LoadPlugin memory #メモリ
LoadPlugin network #ELKスタックとの通信用
LoadPlugin processes #プロセス数
<Plugin interface>
Interface "em0" #監視するネットワークIF名
Interface "ng0" #複数のIFがあって監視するなら必要なだけ並べる
IgnoreSelected false
</Plugin>
< |
LoadPlugin hogeでhogeプラグインを有効にした場合でも<Plugin hoge>は変更の必要があるとか何か値を設定しなければならないとかがなければ書かなくて良い。
/etc/rc.conf (追加)1 2 | #collectd_enable="YES"
collectdmon_enable="YES"
|
collectdは結構簡単に停まってしまうのでcollectdmonに監視させ、collectdが落ちても再起動させるようにする。
2018年2月24日追記: psで起動プロセスを見る限りではcollectdmonだけを有効にしておくので良さそう。逆にcollectd_enableをyesにしているとcollectdが2重に起動しているっぽい。だからcollectd_enableをコメントにしたが、それが正しいかは不明。
ファイアウォールでガチガチならELKスタックのサーバ宛のUDPのポート25826の通信を許可する。(ELKスタックのサーバ側のFWも開けること)
collectdの起動
# service collectdmon start
collectdmonを起動してやればcollectdも一緒に起動する。
逆に停止させる際はcollectdmonを停止してからcollectdを停止する。でないと、collectdを停止してもcollectdmonがcollectdを再起動させてしまう。
逆にcollectdmonが起動した状態でcollectdを再起動させても起動時のメッセージが表示されない。collectdの起動時のメッセージはプラグインの利用可否やエラー情報など設定変更時には有用な情報なので、新しいプラグインを使うときや大きな変更を行った際は一時的にcollectdmonを停めて手動でcollectdの起動・停止・再起動を行う方が良いこともある。
以上を監視対象にしたいホストに入れて回る。
logstashでcollectdからのデータを受ける設定
/usr/local/etc/logstash/logstash.conf1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | input {
#Collectd
udp {
port => 25826
buffer_size => 65536 #←初期値 調整する
workers => 4 #初期値 2
queue_size => 2000 #←初期値 調整する
codec => collectd { }
type => "collectd"
}
}
filter {
}
output {
#stdout { codec => rubydebug } #動作確認用
elasticsearch { hosts => [ "localhost:9200" ] }
}
|
collectdからのデータ流入確認方法
監視対象ホストにcollectdを入れた時は求めているデータが正しく届いているか確認するべき。
そこで、logstashのテスト用の設定ファイルを1つ用意。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | input {
#Collectd
udp {
port => 25827 #25826またはその他使用中ポートでなければ可
buffer_size => 65536 #←初期値 調整する
workers => 4 #初期値 2
queue_size => 2000 #←初期値 調整する
codec => collectd { }
type => "collectd"
}
}
filter {
}
output {
stdout { codec => rubydebug } #動作確認用
}
|
テスト用はinput側ポートで25826以外で待ち受けるようにする。
出力は標準出力(コンソール)へ。
1 2 3 4 5 | <Plugin network>
Server "192.168.12.1" "25827" #←ELKスタックのサーバIPアドレスとポート
<Server "192.168.12.1" "25827"> #←ELKスタックのサーバIPアドレスとポート
</Server>
</Plugin>
|
logstashのテスト用設定の待受ポートに合わせる。設定変更したらcollectdを再起動。
テストが終わったらポート番号を戻してもう一度collectdを再起動をお忘れなく。
# /usr/local/logstash/bin/logstash --path.data /tmp -f /usr/local/etc/logstash/test.conf
別にlogstashが動いてて、テスト用に別プロセスのlogstashを動かす場合は--path.dataで書き込み可能なテンポラリディレクトリを指定しないと動かないらしい。(logstash 5.6以降?)
コマンド入力後すぐは反応がない(筈)ので暫く待ってから)エラーが出ていなくてcollectdが集めた情報が表示されればOK.
何故待ち受けポート番号を変えるか。それはlogstashでポート25826で待ち受けていながら更にテスト用のlogstashを実行してポート25826を使おうとすると
UDP listener died {:exception=>#<SocketError: bind: name or service not known> というエラーになる筈だから。
(エラーになるのを悩んでる人が結構いるみたい)
ファイアウォールでcollectdを入れたホストからのUDP ポート25826宛を受けられるように開けておく。(必要に応じてテスト用のポートも)
logstashの再起動
# service logstash restart
これでcollectdで収集した情報がelasticsearchに流れ込む。
情報の活用は次回以降。
- ウェブ管理者の気まぐれ自作アクセス解析 ElasticsearchとKibanaを添えて
- TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (後編)
- TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (中編)
- TelegrafでElasticsearchにメトリクス送信+Kibanaで可視化 (前編)
- Metricbeatで収集したメトリクスデータをKibanaで可視化する
- Kibanaを操作する前にユーザーを作成する
- Metricbeat 8.6.0のインストールと設定
- Elastic Stack 8系をFreeBSDにインストール
- Elastic Stack 6.4.2への更新 FreeBSD ports用メモ
- WinlogbeatでWindowsイベントログを可視化 後編
- WinlogbeatでWindowsイベントログを可視化 中編
- WinlogbeatでWindowsイベントログを可視化 前編
- Elastic Stackを6.3.2に更新する
- Elastic Stackでシステム監視 Heartbeatで収集した死活情報をKibanaで可視化
- Elastic Stackでシステム監視 Heartbeatを使う準備
- Elastic Stackでシステム監視 FreeBSDのportsで6.2.3に更新
- ELK Stackでシステム監視 Filebeatで収集したVolumioのログから時系列の再生曲名リストを表示
- ELK Stackでシステム監視 Rspamd 1.7系のElasticsearchモジュールを試す
- ELK Stackでシステム監視 FilebeatでNTP統計ログ取得 Logstashで加工
- ELK Stackでシステム監視 FilebeatでRaspberry Pi Zero WのVolumio楽曲再生ランキング
- ELK Stackでシステム監視 MeticbeatでRaspberry Pi Zero WのVolumioを監視
- ELK Stackでシステム監視 FilebeatでFreeBSDのCPU温度取得+Kibanaグラフ化
- ELK Stackでシステム監視 FilebeatでFail2banのBan情報+地図表示
- ELK Stackでシステム監視 MetricbeatでNginxのステータス情報を取得+グラフ化
- ELK Stackでシステム監視 FreeBSDのportsでELK Stack6系をインストール
- ELK Stackでシステム監視 FreeBSDにMetricbeatをインストールしてみる
- ELK Stackでシステム監視 elasticsearchインデックスのスキーマが勝手に変わる対処 テンプレート作成
- NanoPi NEO2(arm64)用にFilebeatをビルド
- ELK Stackでシステム監視 kibanaでDNSサーバの情報表示
- ELK Stackでシステム監視 kibanaのTimelion,Timeseriesでグラフ作成