web-technical-blog

web開発に関する技術メモ

elasticsearch+kibanaをCentOS7にインストールしてみた

macOSVM環境を構築して、elasticsearch(6.x)+kibana(6.x)をインストールした際のメモ

各種ソフトウェアのダウンロード

vagrantbox.es

box追加

  • centos7.2をインストール
$ vagrant box add centos7.2 https://github.com/CommanderK5/packer-centos-template/releases/download/0.7.2/vagrant-centos-7.2.box

vagrantFile

Vagrant.configure("2") do |config|
  config.vm.box = "bento/centos-7.0"
  config.vm.hostname = "192.168.33.10"
  config.ssh.insert_key = false
  config.vm.network "private_network", ip: "192.168.33.10"
  config.vm.provider "virtualbox" do |vb|
    vb.name = config.vm.hostname
    vb.memory = "2048"
    vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
    vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
    vb.customize ["setextradata", :id, "VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled", 0]
    vb.customize ["modifyvm", :id, "--cableconnected1", "on"]
  end
  config.vm.provision "shell", inline: <<-SHELL
    sudo systemctl restart network.service
    yum update -y
    yum install -y zsh vim tree telnet dstat git tig
  SHELL
end

vagrant up エラーする場合

Elasticsearch+kibanaのセットアップ

  • javaのインストールが必要
  • バージョン8以上のJavaが必要

Elasticsearch requires at least Java 8. Specifically as of this writing, it is recommended that you use the Oracle JDK version 1.8.0_73.

$ yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel

$ java -version
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)

Elasticsearch6.1.1インストール

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
  • Installing from the RPM repository
$ sudo vi /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
  • yumでelasticsearchインストール
$ sudo yum -y install elasticsearch
  • 起動設定
$ sudo vi /etc/elasticsearch/elasticsearch.yml
## ElasticSearchをインストールしたIPを設定
network.host: 192.168.33.10
http.port: 9200
  • elasticsearchを再起動
$ sudo service elasticsearch restart
$ sudo /bin/systemctl daemon-reload
$ sudo /bin/systemctl enable elasticsearch.service

kibana6.1.1インストール

$ sudo vi /etc/yum.repos.d/kibana.repo

[kibana-6.x]
name=Kibana repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
  • yumでkibanaインストール
$ sudo yum -y install kibana
  • kinaba.ymlの設定
$ sudo vi /etc/kibana/kibana.yml
server.port: 5601
server.host: "192.168.33.10"
elasticsearch.url: "http://192.168.33.10:9200"
  • kibanaを再起動
$ sudo service kibana restart
$ sudo /bin/systemctl daemon-reload
$ sudo /bin/systemctl enable kibana.service

firewalld設定

  • kibanaの5601ポート
  • elasticsearch9200ポート
$ sudo vi /etc/firewalld/zones/piblic.xml

<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="dhcpv6-client"/>
  <service name="ssh"/>
  <port protocol="tcp" port="5601"/>    <!-- kibanaポート追加 -->
  <port protocol="tcp" port="9200"/>    <!-- elasticsearchポート追加 -->
</zone>
  • firewalldの設定反映
$ sudo systemctl restart firewalld

elasticsearchのインストールディレクト

  • /usr/share/elasticsearch

Plugin

  • kuromoji
    • Kibana上で日本語を正しく解析する際に必要となるプラグイン
cd /usr/share/elasticsearch
sudo bin/elasticsearch-plugin install analysis-kuromoji
curl -H "Content-Type: application/json" -XPOST http://192.168.33.10:9200/blog/article/2 -d '
{
    "title": "My Name Is Kitagawa",
    "content": "I love cat",
    "tags": ["red", "green", "blue", "orange"]
}
  • jsonで一括登録する方法
$ cat requests
{ "index" : { "_index" : "ropeway", "_type" : "event" } }
{ "test" : "fukuda" }

curl -X POST -H "Content-Type: application/x-ndjson" http://192.168.33.10:9200/_bulk?pretty --data-binary "@requests"

ElasticsearchとRDBとの比較

  • インデックス:データベース
  • マッピングタイプ:テーブル
  • カラム:フィールド
  • レコード:ドキュメント