環境構築リスト
- ローカル(Mac OSX) + Elasticsearch
- ローカル(Mac OSX) + docker
- ローカル(Mac OSX) + docker-compose
- EC2 + docker + Elasticsearch
- EC2 + docker + Elasticsearch by terraform
ローカルMac Elasticsearch
Java8 インストール
$ brew cask install homebrew/cask-versions/java8
Elasticsearch インストール
$ brew install elasticsearch
kibana インストール
$ brew install kibana
起動&アクセス
- elasticsearch
$ elasticsearch
- http://localhost:9200/
以下の画面が表示される
{ "name" : "J5lEKmN", "cluster_name" : "elasticsearch_j_tsuchiya", "cluster_uuid" : "N9ufUy6hRGaXsbAqICbPRQ", "version" : { "number" : "6.4.3", "build_flavor" : "oss", "build_type" : "tar", "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" }
kibana
$ kibana
ローカルMac docker Elasticsearch
- dockerはインストール済み前提
docker pull Elasticsearch
$ docker pull docker.elastic.co/elasticsearch/elasticsearch:6.2.1
起動
$ docker run -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.2.1
$ docker ps
Local Mac docker ElasticStack
Local(Mac OSX)
└─docker-compose
├─Elasticsearch(6.5)
├─Kibana(6.5)
└─Logstash(6.5)
docker install
$ brew install
docker compose install
$ yum update -y
$ sudo yum install git -y
$ sudo yum install docker -y
$ docker -v
$ sudo service docker start
$ sudo usermod -a -G docker ec2-user
$ sudo service docker restart
$ exit
docker compose install
$ sudo curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
docker-compose yml
$ vi docker-compose.yml
EC2 docker Elasticsearch
- EC2インスタンスは、t2.medium
- EC2インスタンは、カスタムTCPで5601ポートを解放しておくこと
- 参考にした記事 https://runble1.com/aws-docker-elasticsearch-kibana/
docker インストール
$ sudo yum update
# docker インストール
$ sudo yum install -y docker
# docker 起動
$ sudo service docker start
# ec2-user を docker グループに追加する
$ sudo usermod -a -G docker ec2-user
$ cat /etc/group |grep docker
docker:x:497:ec2-user
# docker コマンドが使えるか確認する
$ docker info
docker-compose インストール
# 公式の通り、curlでダウンロード
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# バイナリに実行権限を付与する
$ sudo chmod +x /usr/local/bin/docker-compose
# インストールされたか確認する
$ docker-compose --version
docker-compose version 1.23.1, build b02f1306
docker-compose.yml
version: "3"
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:6.5.0
container_name: elasticsearch
environment:
discovery.type: single-node
ports:
- "9200:9200"
volumes:
- es_data:/usr/share/elasticsearch/data
kibana:
image: docker.elastic.co/kibana/kibana:6.5.0
container_name: kibana
environment:
ELASTICSEARCH_URL: http://elasticsearch:9200
ports:
- "5601:5601"
depends_on:
- elasticsearch
volumes:
es_data:
driver: local
アクセス
$ curl localhost:9200
- ブラウザから、http:[AWSのパブリックDNS名]:5601 へアクセス
Logstash
logstash on docker sample project
hoge
$ git clone https://github.com/elastic/logstash-docker.git
$ tree .
.
├── LICENSE
├── Makefile
├── README.md
├── bin
│ ├── elastic-version
│ └── pytest
├── build
│ ├── golang
│ │ └── Dockerfile
│ └── logstash
│ ├── bin
│ │ └── docker-entrypoint
│ ├── config
│ │ ├── log4j2.properties
│ │ ├── logstash-full.yml
│ │ ├── logstash-oss.yml
│ │ └── pipelines.yml
│ ├── env2yaml
│ │ └── env2yaml.go
│ └── pipeline
│ └── default.conf
├── examples
│ └── logstash.conf
├── requirements.txt
├── templates
│ ├── Dockerfile.j2
│ └── docker-compose.yml.j2
├── tests
│ ├── __init__.py
│ ├── conftest.py
│ ├── constants.py
│ ├── docker-compose.yml
│ ├── fixtures.py
│ ├── helpers.py
│ ├── test_basics.py
│ ├── test_entrypoint.py
│ ├── test_labels.py
│ ├── test_process.py
│ └── test_settings.py
├── tox.ini
└── version.json
11 directories, 30 files
- docker-compose.demo.yml
- examples/elastic-stack-demo/logstash.conf
EC2 docker Elasticsearch terraform
Elasticsearch Service
新しいドメインの定義
- ドメイン名:pureone
- バージョン:最新
-> Next
クラスターの設定
- ノードの設定
- インスタンス数:1
- インスタンスタイプ:t2.small.elasticsearch
- 専用マスター有効化:OFF
- ゾーン対応の有効化:OFF
- ストレージ設定
- ストレージタイプ:EBS
- EBSボリュームタイプ:汎用(SSD)
- EBSボリュームサイズ:10
- 保存時の暗号化の有効化:OFF
- スナップショットの設定
自動スナップショットの開始時間:デフォルト
-> Next
アクセスの設定
- ネットワーク構成
- パブリックアクセス
- ノード間の暗号化:OFF
- Kibana認証
- OFF
- アクセスポリシー
- ドメインアクセスポリシーの設定
- 特定のIPからのドメインへのアクセスを許可:パブリックIPを入力(ブラウザで自分のIPを検索)
- ドメインアクセスポリシーの設定
-> Next
確認
- OK
操作
https://dev.classmethod.jp/server-side/elasticsearch/use-kibana-on-aws/
インデックスの作成
$ curl -XPUT ELASTICSEARCH_DOMAIN_ENDPOINT/shakespeare/_doc/1 -d '{
"mappings" : {
"_default_" : {
"properties" : {
"speaker" : {"type": "string", "index" : "not_analyzed" },
"play_name" : {"type": "string", "index" : "not_analyzed" },
"line_id" : { "type" : "integer" },
"speech_number" : { "type" : "integer" }
}
}
}
}' -H 'Content-Type: application/json'
データインポート
- Jsonデータ
shell $ curl -XPUT ELASTICSEARCH_DOMAIN_ENDPOINT/_bulk --data-binary @shakespeare.json
HTTP リクエストペイロードの制限により、10MB を超えたため、エラーが発生。データを変更するかプランを変更するか。。。一旦放置。
形態素解析
$ curl -XPOST ELASTICSEARCH_DOMAIN_ENDPOINT/kuromoji/ -d'
"index":{
"analysis":{
"tokenizer" : {
"kuromoji" : {
"type" : "kuromoji_tokenizer"
}
},
"analyzer" : {
"analyzer" : {
"type" : "custom",
"tokenizer" : "kuromoji"
}
}
}
}
}' -H 'Content-Type: application/json'