Ubuntu18.04でElastic Stack(6.4.x)


背景

進化の早いElastic製品群
今までは5系を使用していたがせっかくなので最新版を再度インストールから実施してみました。
その際のインストール手順メモです。

5回編成予定で導入2回、入門1回、実践2回を書く予定(気力があれば。。)

Elastic Stackって?

オランダのElastic社が提供しているログ収集や解析などを可視化するための
オープンソースソフトウェア群

「Elasticsearch」「kibana」「logstash」「beats」の4つで構成されている。

Elasticsearch

分散処理型の検索エンジンです。
大量のドキュメントから目的の単語を含むドキュメントを高速に抽出することができます。

Logstash

各環境に散らばっているログを集め、指定した対象に連携できるツールです。
ログの連携だけではなく、ログの加工機能も持ち合わせています。

kibana

ElasticSearchで集めたデータを可視化するためのツール
折れ線グラフ・棒グラフ・円グラフを用いてログの詳細な情報を解析し、色分けして表示することが可能

Beats

機器のデータをElasticsearchやLogstashに転送する簡易的なデータ収集ツールです。
例えばネットワークのパケット情報・Windowsのイベントログ・死活監視の情報などを収集可能なため、
Logstashでカバーできないような情報を集めてくることができます。

まとめ

製品名 機能 開発言語
Elasticsearch ドキュメントを保存・検索 Java
Kibana データの可視化 JavaScript
Logstash データ取り込み・変換 Ruby
Beats データ取り込み Go言語

導入手順

Elasticsearch→Logstash(Beats)→Kibanaの順にインストールします。

環境

# OSとカーネルバージョン
$ cat /etc/lsb-release | grep RELEASE ; uname -r
DISTRIB_RELEASE=18.04
4.15.0-36-generic

# javaは必須です。なければインストールしてください
$ java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-1ubuntu0.18.04.1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)

導入① Elasticsearch

Elasticsearchのインストール

# パッケージの取得
$ curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.3.deb
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 93.2M  100 93.2M    0     0   548k      0  0:02:54  0:02:54 --:--:--  502k

# インストール
$ sudo dpkg -i elasticsearch-6.4.3.deb
以前に未選択のパッケージ elasticsearch を選択しています。
(データベースを読み込んでいます ... 現在 207005 個のファイルとディレクトリがインストールされています。)
elasticsearch-6.4.3.deb を展開する準備をしています ...
elasticsearch (6.4.3) を展開しています...
elasticsearch (6.4.3) を設定しています ...
(省略)
新バージョンの設定ファイル /etc/elasticsearch/elasticsearch.yml をインストールしています ...
新バージョンの設定ファイル /etc/elasticsearch/jvm.options をインストールしています ...
新バージョンの設定ファイル /etc/elasticsearch/log4j2.properties をインストールしています ...
新バージョンの設定ファイル /etc/default/elasticsearch をインストールしています ...
新バージョンの設定ファイル /usr/lib/systemd/system/elasticsearch.service をインストールしています ...
新バージョンの設定ファイル /etc/init.d/elasticsearch をインストールしています ...
Created elasticsearch keystore in /etc/elasticsearch
systemd (237-3ubuntu10.4) のトリガを処理しています ...
ureadahead (0.100.0-20) のトリガを処理しています ...
ureadahead will be reprofiled on next reboot

# サービス起動
$ sudo systemctl start elasticsearch.service

# 起動確認。下記のようにリクエストを送ればレスポンスが来ます
$ curl -XGET 'localhost:9200/?pretty'
{
  "name" : "uIaLhsy",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "9gpCm_fWRDCQ1Lk4vSn_oQ",
  "version" : {
    "number" : "6.4.3",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "fe40335",
    "build_date" : "2018-10-30T23:17:19.084789Z",
    "build_snapshot" : false,
    "lucene_version" : "7.4.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

導入② Logstash

パッケージの取得
$ curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-6.4.3.deb

# インストール
$ sudo dpkg -i logstash-6.4.3.deb
以前に未選択のパッケージ logstash を選択しています。
(データベースを読み込んでいます ... 現在 207390 個のファイルとディレクトリがインストールされています。)
logstash-6.4.3.deb を展開する準備をしています ...
logstash (1:6.4.3-1) を展開しています...
logstash (1:6.4.3-1) を設定しています ...
Using provided startup.options file: /etc/logstash/startup.options
Successfully created system startup script for Logstash

# サービス起動
$ sudo systemctl start logstash.service

導入③ Kibana

# パッケージ取得
$ curl -L -O https://artifacts.elastic.co/downloads/kibana/kibana-6.4.3-amd64.deb
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  225M  100  225M    0     0   859k      0  0:04:29  0:04:29 --:--:--  984k

# インストール
$ root@ubuntu0827:~/iog/elastic_stack# dpkg -i kibana-6.4.3-amd64.deb 
以前に未選択のパッケージ kibana を選択しています。
(データベースを読み込んでいます ... 現在 222723 個のファイルとディレクトリがインストールされています。)
kibana-6.4.3-amd64.deb を展開する準備をしています ...
kibana (6.4.3) を展開しています...
kibana (6.4.3) を設定しています ...
(省略)
新バージョンの設定ファイル /etc/kibana/kibana.yml をインストールしています ...
systemd (237-3ubuntu10.4) のトリガを処理しています ...
ureadahead (0.100.0-20) のトリガを処理しています ...

# kibana.ymlの編集
# サーバ名だったりアクセス許可ホストを設定します。
$ diff 
-#server.host: "localhost"
+server.host: "0.0.0.0"

-#server.name: "your-hostname"
+server.name: "ubuntu0827"

# サービス起動
$ systemctl start kibana.service

全体動作確認

上記の設定でリモートアクセスも許可しているので他クライアントからでもアクセスできます。

http://192.168.1.156:5601
といった形でIPとポートを指定すればアクセスできます。

次はBeatsを設定します

Beatsとは?

Beatsはデータ取り込みを行うプラットフォームとなります。
同じ位置付にLogstashがありますが違いはLogstashは多くの機能を一つで賄うのに対し
Beatsではそれぞれがインプットに特化したシンプルかつ軽量なデータ取り込みツールです。
ちなみに実装はGoです。なんとJVM不要!(Elasticsearchやら動かしているのでまあ。。。)

とても簡単に言うとモニタリングツールのエージェント

Beatsファミリー

Beatsは下記6つの種類があります

名前 概要
Metricbeat CPU,メモリ等の情報収集
Filebeat ログファイルの収集
Packetbeat パケット情報の収集
Auditbeat 監査データの収集
Heartbeat リモートから稼働状況の監視
Winlogbeat Windowsのイベントログの収集

詳細は公式をご確認ください
https://www.elastic.co/jp/products/beats

環境

Elasticsearch 6.4.3
Kibana 6.4.3
Metricbeat 6.4.3

導入

今回はメトリクスを対象としているのでMetricBeatを導入します。

# バイナリ取得
$ curl -L -O https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-6.4.3-amd64.deb
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 18.5M  100 18.5M    0     0   542k      0  0:00:35  0:00:35 --:--:--  593k

# インストール
$ dpkg -i metricbeat-6.4.3-amd64.deb

導入は以上です。
次は設定ファイルを書き換えます。

公式の手順で下記のように設定を追記してください。

/etc/metricbeat/metricbeat.yml
output.elasticsearch:
  hosts: ["<es_url>"]
  username: "elastic"
  password: "<password>"
setup.kibana:
  host: "<kibana_url>"

次にmetricbeatを起動します。

$ metricbeat setup
$ metricbeat -e

コンソールでデータの送信が確認できるのでこの状態で下記URLへアクセス。

あとはDashboardを開き下記を選択

そうすることで下記のようにCPU使用率やメモリ使用率、トラフィックなどが表示されます。

あとはサービスとして起動するために下記コマンドを実行します。

$ systemctl status metricbeat.service

※ここでエラーが出る場合は前回の導入時に失敗している可能性があります。

まとめ

とりあえずElastic Stackの導入が完了
次回からはこれらを使っていろいろ遊んだ結果を記載していきます。

Elasticsearch : データを検索、分析、保存
Kibana : データを可視化
Logstash : 動的なデータ収集パイプライン
Beats : データシッパープラットフォーム

もちろんノード数を増やせばそれに応じて自動でメトリクスを取得してくれます。
下記はノード数:2のときの表示例です。

参考

◼ 公式
◼ Elastic Stackって何?