Elastic Beats と ElasticSearch と Kibana で NewRelic ぽいものを作ってみる

  • 8
    Like
  • 0
    Comment

はじめに

システム構成やセキュリティガイドラインで、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ほどリレーショナルに情報の閲覧はできませんが、各データを一見として見れるので、各ログを順次見ていくことに比べれば調査がより簡単に行えると思います。

サンプル:

screencapture-192-168-184-167-5601-app-kibana-1473703008678.png