データを集めて可視化しよう(Beatsを使って情報を集めてみる)
「とりあえずTwitterのつぶやき履歴はKibanaに取り込めたけれど、各サーバーのCPU使用率やメモリの使用率の取得は大変そうだな…。」
もふもふちゃんの言う通りです。サーバーの情報をLogstashで取り込む場合、一度topコマンドなどの結果をファイル等に出力し、LogstashでElasticsearchへ送る必要があります。ただし、そのために新しくプログラムを作成することは大変です。
そこで、今回はBeatsの中でもサーバー情報を自動で収集しElasticsearchに送付するMetricbeatを使用することにしましょう。
Beatsのインストール
BeatsのインストールはELKが正しく起動できた後に行います。インストール時にトラブルがあった場合、Beatsに問題があるのかを切り分けるのが難しくなるためです。
インストール方法としては、各OS用に提供されているパッケージからインストールする方法と、リポジトリからダウンロードしてインストールする方法の2種類があります。ただし、Winlogbeatはパッケージからインストールする方法しか使うことができません。
今回はMetricbeatのインストール方法を例に挙げて紹介します。
パッケージを使ってインストールする場合(Windows以外のOS)
各OSに対応したパッケージをダウンロードし、インストールを行う点は共通です。サンプルコードではバージョン「5.4.0」を指定していますが、別バージョンをインストールする場合「5.4.0」の部分を変更してください。
# tar.gzファイルをダウンロード
$ curl -L -O https://artifacts.elastic.co/downloads/beats/[※改行位置指定※]metricbeatbeat/metricbeatbeat-5.4.0-darwin-x86_64.tar.gz
# (必要であれば)ダウンロードしたファイルを解凍
$ tar xzvf metricbeat-5.4.0-darwin-x86_64.tar.gz
# rpmファイルをダウンロード
$ curl -L -O https://artifacts.elastic.co/downloads/beats/[※改行位置指定※]metricbeat/metricbeat-5.4.0-x86_64.rpm
# rpmパッケージのインストール
$ sudo rpm -vi metricbeat-5.4.0-x86_64.rpm
# Beatsに必要なパッケージをインストール
$ sudo apt-get install libpcap0.8
# debパッケージをダウンロード
$ curl -L -O https://artifacts.elastic.co/downloads/beats/[※改行位置指定※]metricbeat/metricbeat-5.4.0-amd64.deb
# debパッケージのインストール
$ sudo dpkg -i metricbeat-5.4.0-amd64.deb
Windowsにインストールする場合
まず始めに、各BeatsのダウンロードURL(例:https://www.elastic.co/downloads/beats/metricbeat)からBeatsのパッケージをダウンロードします。C:\Program Filesにダウンロードしたzipファイルを配置し、解凍します。最後に、Administrator権限でPowerShellを起動し、次のコマンドを入力します。
PS > cd 'C:\Program Files\Metricbeat'
PS C:\Program Files\Metricbeat> .\install-service-metricbeat.ps1
Metricbeatのセットアップ
Metricbeatは基本的にインストールするだけでプロセスごとのCPU 使用率・メモリ使用率を収集できます。ただし、収集したデータをどこに送付するかは自分で指定する必要があります。
metricbeat.ymlの編集
MetricbeatもLogstashと同様、どこに取得したデータを送信するか決定します。コンフィグはYAML形式のファイルで、metricbeat.ymlという名称です。rpmまたはdebパッケージからインストールした場合は/etc/metricbeat/下に配置されています。
metricbeat.ymlの設定は複数ありますが、最低限設定するべき項目は「どこに収集したデータを送付するか」の1種類のみです。
ログの送信元を指定する(output)
Metricbeatで取得したサーバー情報をどこに送信するか指定します。Elasticsearchにそのまま送付する場合、「Elasticsearch output」セクションを編集します。Logstashで独自の情報を付け足す場合などは「Logstash output」セクションを編集します。
71 #--------------------- Elasticsearch output ----------------
72 output.elasticsearch:
73 # Array of hosts to connect to.
74 # hosts: ["localhost:9200"]
75 hosts: ["10.0.0.100:9200"]
82 #------------------ Logstash output ------------------------
83 #output.logstash:
84 # The Logstash hosts
85 #hosts: ["localhost:5044"]
86 #hosts: ["10.0.0.100:5044"]
コンフィグのテストを行う
-configtestオプションを使用し、Beatsのコンフィグが正しいか確認することができます。
$ /metricbeat -configtest -e.
$ /metricbeat.sh -configtest -e.
Metricbeatの起動
コンフィグのテスト終了後、いよいよBeatsを起動します。Beatsで取得したファイルの送信先サービスが起動しているか確認して下さい。「-d publish」オプションをつけるとデバッグすることができます。
$ sudo ./metricbeat -e -c metricbeat.yml -d "publish"
パッケージからインストールした場合
パッケージでインストールした場合、/etc/init.d配下の起動用スクリプトからサービスを立ち上げます。最後に「OK」と出てきた場合、サービスは起動しています。
$ sudo /etc/init.d/metricbeat start
# 出力ログ省略
Config OK
[ OK ]
また、サーバー起動時にMetricbeatを自動起動したい場合、各OSに合わせたサービス自動起動設定方法を使用することで設定できます。設定方法はElasticsearchやKibanaの設定方法を参考にしてください。
$ sudo chkconfig --add metricbeat
$ sudo chkconfig --list | grep metricbeat
metricbeat 0:off 1:off 2:on 3:on 4:on 5:on 6:off
WIndowsでMetricbeatを起動する場合
パワーシェルのコマンドプロンプトから起動コマンドを発行することで、Metricbeatを起動することができます。
PS C:\Program Files\Metricbeat> Start-Service metricbeat
これで、もふもふちゃんが取得したい情報をElasticsearchに集めることができました。次はKibanaで集めたデータを可視化しましょう。
(次回へ続く)
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- Elasticsearch Logstash Kibanaの環境構築
- トラブルシューティング
- Elasticsearchを開発するElastic、最新バージョン5.0とElastic Stackを解説
- データを集めて可視化しよう(Twitterのつぶやき履歴編)
- Elastic Stackって何?
- Elastic大谷氏とマイクロソフト川崎氏が語る Elastic+Azureですべてが可視化される世界
- サンドボックス解析によるマルウェア対策ツール「cuckoo」を使ってみよう
- スローログの集計に便利な「pt-query-digest」を使ってみよう
- Ansibleのインストールとサンプルコードの実行
- 大切なのは「スケール」すること キーパーソンが語るElasticの2017年