metricbeat+elasticsearch+kibanaでUbuntuマシンのメトリックを可視化。


マシンの構成は以下です。すべて1台で賄うことも可能なので、参考までに。

  • メインPC
    • kibanaの画面を確認します
  • Ubuntu server
    • 集計対象マシンです。metricbeatをインストールします。
  • elasticsearch & kibana(ベースOSはubuntu)
    • 集計結果を集約するマシンです。
    • IP: 192.168.11.101

apt用のリポジトリにelasticsearchを追加

パッケージマネージャを使って管理したほうがアップデート/削除がしやすいので、aptを使ってインストール出来るように設定します。

elasticsearchリポジトリの認証用鍵を追加

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

後のインストールに必要になるコンポーネントをインストール

sudo apt-get install apt-transport-https

elasticのリポジトリをaptソースリストに追加

echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

参考:https://www.elastic.co/guide/en/beats/metricbeat/current/setup-repositories.html

elasticsearchのインストール

sudo apt-get update && sudo apt-get install elasticsearch

elasticsearchを外部からアクセスできるようにする

すべてを1台のマシンで済ませる場合には不要です。
今回は集計対象のマシンとelasticが動くマシンが別なので、外部からアクセスできるように設定を追加しました。

/etc/elasticsearch/elasticsearch.yml
# ---------------------------------- Network -----------------------------------
#
# Set the bind address to a specific IP (IPv4 or IPv6):
#
network.host: 0.0.0.0
#
# Set a custom port for HTTP:
#
http.port: 9200
#
# For more information, consult the network module documentation.
transport.host: localhost
transport.tcp.port: 9300
#

設定が終わったので、elasticsearchを起動します。

systemctl restart elasticsearch

kibanaのインストール

sudo apt-get update && sudo apt-get install kibana

kibanaも同様に外部からアクセス可能なように設定を行いました。

/etc/kibana/kibana.yml
server.host: "0.0.0.0"

設定が終わったので、kibanaを起動します。

systemctl restart elasticsearch

集計対象ホストマシンにmetricbeatをインストール

sudo apt-get update && sudo apt-get install metricbeat

elasticsearchホストを設定

/etc/metricbeat/metricbeat.ymlに以下のような設定項目があるので、環境に合わせてセット。
ローカルホストでelasticsearchを動かす人は不要と思われます。
今回は異なるマシンのelasticsearchにアクセスするため、別ホストのIP/ポートをセットしました。

/etc/metricbeat/metricbeat.yml
output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["192.168.11.101:9200"]

集計対象をセット

環境にあわせて集計したいmodulesを有効化します。
今回はUbuntuマシンの情報が取りたいだけなので実施しませんでしたが、参考までに。

metricbeat modules enable apache mysql

利用な可能なmodulesは以下で確認できます。
デフォルトはsystemが有効になっているため、特に作業はありません。

root@ubuntu ~# metricbeat modules list
Enabled:
system

Disabled:
aerospike
apache
aws
beat
beat-xpack
ceph
cockroachdb
consul
coredns
couchbase
couchdb
docker
dropwizard
elasticsearch
elasticsearch-xpack
envoyproxy
etcd
golang
graphite
haproxy
http
jolokia
kafka
kibana
kibana-xpack
kubernetes
kvm
logstash
logstash-xpack
memcached
mongodb
mssql
munin
mysql
nats
nginx
oracle
php_fpm
postgresql
prometheus
rabbitmq
redis
statsd
traefik
uwsgi
vsphere
windows
zookeeper

metricbeatの起動

systemctl restart metricbeat

kibanaから集計結果の確認

メインPCのブラウザから192.168.11.101:5601にアクセス。
左側のInfrastructureをクリックして情報を確認。

まとめ

kibana, metricbeat, elasticsearchの接続のための情報を書いただけなのに、しっかり情報が取得できているのが楽で凄いですね。
metricbeatさえ入れておけば他のモジュールもすぐに集計開始できそうなので、また情報があれば記事にします。