2017年10月1日日曜日

Elasticsearch + Kibana で解析基盤を作る - その1



何番煎じかわかりませんが、個人的にも会社でもデータ解析用の基盤として利用しているEFKの構成方法を記載してみます。
結構負荷がかかるので、CPUもメモリも良いものを積んだ方がいいと思います。

今回の概要構成は下記の通り。
  • CentOS7.4
  • Elasticsearch 5.6.2
  • Kibana-5.6.2

Elasticsearchのインストール


基本的に公式サイトからダウンロードしてインストールするだけです。
yum install java
yum install https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.1.rpm
日本語の検索を行うために、形態素解析のkuromojiを入れます。 プロクシがある環境では、コマンド実行前に「export ES_JAVA_OPTS="-Dhttp.proxyHost=[proxy_ip] -Dhttp.proxyPort=[proxy_port] -Dhttps.proxyHost=[proxy_ip] -Dhttps.proxyPort=[proxy_port]"」を実行して下さい
/usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji

つぎに設定ファイルを開き編集します。基本的に設定ファイルの最後に追記すればOKです。
ファイル: /etc/elasticsearch/elasticsearch.yml
network.host: [els_ipaddress]
http.port: 9200
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.* の設定は後から入れるElasticsearch-headで cluster health: not connectedと表示され接続できないのを防ぐためです。[els_ipaddress]は実際のElasticsearchをインストールするサーバのIPと置き換えてください。
編集したらElasticsearchを起動します。
systemctl start elasticsearch
問題なく起動したかは下記のファイルにログが記録されますので、エラーなどが発生していないか確認しておいてください。
/var/log/elasticsearch/elasticsearch.log
続けて、firewalldを開きます。ポートはデフォルトでは9200番を使用するようです。
送信元はのちにインストールするKibanaのサーバと管理用の端末など直接アクセスするホストのIPアドレスを含めるようにしてください。
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="[kibana_ipaddress]/[mask]" port port="9200" protocol="tcp" log prefix="elasticsearch" level="info" accept'
firewall-cmd --reload

Kibanaのインストール

Kibanaも公式サイトからダウンロードしてインストールするだけです。
yum install https://artifacts.elastic.co/downloads/kibana/kibana-5.6.1-x86_64.rpm
設定ファイルも先ほどと同様、最後に下記の内容を追記してください。
/etc/kibana/kibana.yml
server.port: 5601
server.host: [kibana_ipaddress]
elasticsearch.url: "http://[els_ipaddress]:9200"
[els_ipaddress]は実際のElasticsearchをインストールするサーバのIPと置き換えてください。
[kibana_ipaddress]はKibanaをインストールしたサーバのIPと置き換えてください。

設定が完了したら、Daemonを起動しておきます。
systemctl start kibana

こちらもFWを開きます。ポートは一般的に5601番を使用するようです。こちらは、Apcheなどと連携しない場合はユーザが直接利用することになりますので、利用者向けに広く開ける必要があります。
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="[client]/[mask]" port port="5601" protocol="tcp" log prefix="kibana" level="info" accept'
firewall-cmd --reload

実際にブラウザからアクセスしてみます。
http://[kibana_ipaddress]:5601/app/kibana
この時点では下記のように「Configure an index pattern」という画面が出てくれば成功です。

x-pack

x-packがあると、Elasticsearchのパフォーマンスを監視することができます。x-packを導入するには無料とはいえライセンス登録が必要になるため、導入するかしないかは、この時点で決めておいた方がいいです。後から入れようとするといろいろ面倒なので・・・。
有償のライセンス費用を払えば、ユーザの権限管理もできますが、今回は無償のライセンスを発行して使います。

まず、Daemonが起動している場合は止めておきます。
systemctl stop elasticsearch
systemctl stop kibana
インストールはelasticsearch-pluginから行います。
/usr/share/elasticsearch/bin/elasticsearch-plugin install x-pack
インストールが終わったら、Elasticsearchのサービスを起動します。
systemctl start elasticsearch
インストールが無事終了したかは下記のコマンドで確認できます。
curl -XGET -u elastic:changeme 'http://[els_ipaddress]:9200/_xpack/license'
{
  "license" : {
    "status" : "active",
    "uid" : "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
    "type" : "trial",
    "issue_date" : "2017-10-01T02:58:46.917Z",
    "issue_date_in_millis" : 1506826726917,
    "expiry_date" : "2017-10-31T02:58:46.917Z",
    "expiry_date_in_millis" : 1509418726917,
    "max_nodes" : 1000,
    "issued_to" : "elasticsearch",
    "issuer" : "elasticsearch",
    "start_date_in_millis" : -1
  }
}


次にkibanaにもx-packのプラグインを入れます。なお、インストールは下記の1行でインストール可能ですが、kibana-pluginは現時点ではProxyサーバに対応していませんので、Proxyのある環境の場合は、ダウンロードしたうえでインストールする必要があります。
/usr/share/kibana/bin/kibana-plugin install x-pack
Proxy環境下でインストールする場合は下記のような感じで、wgetした後にファイルを指定してインストールしてください。パスはフルパス指定じゃないと通らないようです。
wget https://artifacts.elastic.co/downloads/kibana-plugins/x-pack/x-pack-5.6.2.zip
/usr/share/kibana/bin/kibana-plugin install file:////local/path/x-pack-5.6.2.zip


インストールが終わったら、kibanaも起動します。
systemctl start kibana
Daemonが自動起動するように設定しておきます。
systemctl enable elasticsearch
systemctl enable kibana

実際にブラウザからアクセスしてみます。
http://[kibana_ipaddress]:5601/app/kibana
この時点では下記のようにログイン画面が出てくれば成功です。ユーザ名は「elastic」パスワードは「changeme」でログインできます。


ログインしたら、左のメニューから「Monitoring」を選択し「Your Trial license will expire on」に続く日付をクリックしてください。



今回は、1年ごとに更新が必要で機能が限定されているBasicLicenseを取得しますので「Get Basic」をクリックしてください。

メールアドレス宛にライセンスキーへのリンクが届きますので、ユーザ名、メールアドレス等を入力してください。


ライセンスキーを取得したら、名前を付けてサーバ上に保存して下さい。ここでは、「~/x-pack-license.txt」として保存をしたものとして進めます。
ライセンスキーの登録は下記のコマンドで実行できます。
curl -XPUT -u elastic:changeme 'http://[els_ipaddress]:9200/_xpack/license?acknowledge=true' -H "Content-Type: application/json" -d @x-pack-lisence.txt
無事登録できたかは下記のコマンドで確認できますので、確認しておいてください。
curl -XGET 'http://[els_ipaddress]:9200/_xpack/license'
下記のような内容が応答として帰ってくれば、完了です。
{
  "license" : {
    "status" : "active",
    "uid" : "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "type" : "basic",
    "issue_date" : "2017-10-02T00:00:00.000Z",
    "issue_date_in_millis" : 1506902400000,
    "expiry_date" : "2018-10-02T23:59:59.999Z",
    "expiry_date_in_millis" : 1538524799999,
    "max_nodes" : 100,
    "issued_to" : "先ほど登録した名前 (会社名)",
    "issuer" : "Web Form",
    "start_date_in_millis" : 1506902400000
  }
}

0 件のコメント:

コメントを投稿