はじめに
システム構成やセキュリティガイドラインで、NewRelicなどの外部サービスが利用できない、でも、システムのボトルネックを確認したいと言った場合があるかと思います。
そこで、ElasticBeats と ElasticSearch と Kibana を組み合わせ、簡単なシステムモニターを作ってみます。
インストール
Packetbeat
rpm -Uvh https://download.elastic.co/beats/packetbeat/packetbeat-1.3.0-x86_64.rpm
## Topbeat
rpm -Uvh https://download.elastic.co/beats/topbeat/topbeat-1.3.0-x86_64.rpm
ElasticSearch
rpm -Uvh https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/2.4.0/elasticsearch-2.4.0.rpm
Kibana
rpm -Uvh https://download.elastic.co/kibana/kibana/kibana-4.6.1-x86_64.rpm
ElasticSearch と Kibana の起動とセットアップ
service kibana start
service elasticsearch start
Packetbeat の設定
インデックステンプレートの作成
ElaticSearch内にインデックステンプレートを作成します。
curl -XPUT 'http://localhost:9200/_template/packetbeat' -d@/etc/packetbeat/packetbeat.template.json
- 上記では、elasticsearch が localhost で稼働しています。別サーバーで稼働している場合は、適時変更ください。
設定
設定ファイルは [/etc/packetbeat/packetbeat.yml] になります。
現時点ではディフォルトのままで問題ありませんが、ElaticSearchが別サーバーで稼働する場合は変更しましょう。
output:
elasticsearch:
hosts: ["localhost:9200"]
topbeat の設定
インデックステンプレートの作成
ElaticSearch内にインデックステンプレートを作成します。
curl -XPUT 'http://localhost:9200/_template/topbeat' -d@/etc/topbeat/topbeat.template.json
- 上記では、elasticsearch が localhost で稼働しています。別サーバーで稼働している場合は、適時変更ください。
設定
設定ファイルは [/etc/topbeat/topbeat.yml] になります。
現時点ではディフォルトのままで問題ありませんが、ElaticSearchが別サーバーで稼働する場合は変更しましょう。
output:
elasticsearch:
hosts: ["localhost:9200"]
topbeat と Packetbeat の起動
service packetbeat start
service topbeat start
しばらくすると、ElasticSearch内にデータが保存されていきます、KibanaのDashBoardにて必要なデータを表示させます。
まとめ
特に難しい設定もなく、データの取得までが行えました。
下記のサンプルを見ていただくとわかる通り、MySQLのスロークエリ、URLの一覧、サーバーの負荷状況などが一見で表示されます。
それ以外にも、filebeatを組み合わせ、PHP-FPMのスローログを取り込むことで、PHPの実行時間も表示できるようになり、さらに詳細な情報が得れます。
NewRelicほどリレーショナルに情報の閲覧はできませんが、各データを一見として見れるので、各ログを順次見ていくことに比べれば調査がより簡単に行えると思います。