Docker local環境 †docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:6.4.1 REST API †?pretty=trueをつけないと超見辛い!
elastic dump †ファイルへ †elasticdump --input=http://localhost:9200/test --output=/var/tmp/test.json --type=data 気になりワード †
JavaClient †HighLevelRestClient †
RestClient †
構成 †
シャードの数はノードの数に合わせておくと良いらしい。ノードが少ないのにシャードを増やしても早くならない。
ノードの種類 †
シャードはノード数と同じにしておくと良いのだが、将来的にノードを増やすことで負荷分散することを考えているのであればノード数以上にシャードを設定しておくのもあり。 シャードの数 †https://qbox.io/blog/optimizing-elasticsearch-how-many-shards-per-index INDEX設計 †一つのINDEXでシャードの数が決まるので、スケールさせる前提であればINDEXを分ける。また親子関係がある場合は一つのINDEXにする必要がある。INDEX名を適当に決めるとINDEX TEMPLATEが適用できなくなってしまうので、きちんと命名規約を決めておくこと! AWS Elasticserach Service †
ElasticSearchServiceへCloudWatchから流す †VPCFlowLogやCloudTrailをElasticSearchServiceに流しているが、これは裏でLambdaを自動で作成してくれているだけである。そのLambdaをカスタマイズすれば任意の場所へ送信可能。 Elastic Cloud(旧Found) †
参考ページ †dstat投入 http://qiita.com/yumatz/items/debbc6d6063c85531fd1 運用 †本番環境向け推奨マシンスペック †実験用途で2GBのマシンに入れたが、結構な割合でOomKillerを発動させたり、落ちてたりする。
設定 †
投入までの流れ †
Mappingの定義 †スキーマレスとはいえ、集計や検索などを考えると事前にMappingの定義は必須である。 単なる型以外にも、入れ子になっているもの(Nested Type)やRDBの親子関係に近いParent-Childなどのデータ構造のバリエーションがある。同じインデックスの同じフィールド名は同じ定義にしなければいけないので、一つのインデックスに複数のタイプが存在する場合でデータ型も違うなら、名前を分けるように(titleではなくblog_title,post_title)
クラスターの可視化 †
インストール後以下のURLで参照可能。 http://133.18.30.106:9200/_plugin/head/ プラグインインストール †
yumの場合はコマンドは以下の場所にある /usr/share/elasticsearch/bin plugin install プラグイン名 # kuromojiインストール /usr/share/elasticsearch/bin/plugin install analysis-kuromoji # watcherのためのライセンスプラグイン /usr/share/elasticsearch/bin/plugin install elasticsearch/license/latest # watcher /usr/share/elasticsearch/bin/plugin install elasticsearch/watcher/latest # bigdisk /usr/share/elasticsearch/bin/plugin install lukas-vlcek/bigdesk 有償プラグイン †
Graph Deep Dive †Sinificant Term Aggrigation Graphの利点 関連性を見て分析 。 404のエラーからさらにドリルダウンして、各ブラウザを表示させることができる。 トライアルは30日 データが入っていればすぐ利用可能。 アラート †無料ならelastalert(Yelp開発)。有料ならWatcher(サブスクリプション契約必要) https://github.com/Yelp/elastalert 情報 †パフォーマンスチューニングの注意点 http://qiita.com/rjkuro/items/e79eec7ffb0511b7c678 td-agentとの連携 †
/opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-elasticsearch Elasticsearch 2.2 †デフォルトはローカルからのみ接続可能なので、以下の変更を入れる。
Kibana4.4 †解凍して、host変えて、起動して5601ポートでアクセス。 Beats †エージェント型だが、マシンの情報を定期的に送ってくれる上にダッシュボードのテンプレートも併せて提供されている。 トラブルシューティング †cluster_block_exception †ディスク容量が95%超えると書き込み抑制する。管理コマンドで解除する。 curl -XPUT -H "Content-Type: application/json" http://localhost:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}' fluentd + ElasticSearchServiceで時折「Cannot get new connection from pool」 †
利用事例 †
運用履歴 †Kagoya 2G †限界ぎりぎりまでメモリを使う。何もしてなくても自然に落ちるという・・ Apr 27 02:19:53 v9215 elasticsearch: # There is insufficient memory for the Java Runtime Environment to continue. Apr 28 09:11:22 v9215 elasticsearch: # There is insufficient memory for the Java Runtime Environment to continue. Apr 28 13:01:44 v9215 elasticsearch: # There is insufficient memory for the Java Runtime Environment to continue. Azure A2 †3.5Gあるので通常のサーバー用途と共存させてもなんとか耐えられる。 5/12 3:55AMを境にpacket&top beatsが勝手に停止していた。 5/24 4:05AMを境にElasticSearchが落ちていた。その近辺でoom-killerが発動していた。 そしてkibana has broken completely! plugin:elasticsearch Elasticsearch is still initializing the kibana index. 全部のインデックスを消去して、わけわからんけど復旧。 Kibana †視覚化ツールの標準。認証機能が単体ではまだ実装されておらず、SearchGuardなどのプラグイン頼み プラグイン †kibana単体にもプラグインインストール可能。RPMインストールの場合は以下の場所からインストール可能。下記例はtimelionをインストールする。 /opt/kibana/bin/kibana plugin -i kibana/timelion 検索 †
Visualize †単一の値の平均値を出す。metrics 時系列での特定の値の変化を出す。 †
timelionプラグイン †kibanaとは別アプローチで流れるSQLのように関数でグラフを作成できるツール。まだ出たばっかりだが、プログラマー的にはこちらの方が再利用しやすいのではないかな? ElastAlert †無料のアラート検知&通知ツール。コマンドラインで実行する。 インストール †大量投入 †http://ameblo.jp/fcv-system/entry-11950051736.html API †https://medium.com/hello-elasticsearch/elasticsearch-api-83760ce1424b#.igvw3frk5 Kibana クエリー †_type: road_times AND road_id: 1 _type: marcket_records AND marcket_id: 1
Counter: 3408,
today: 2,
yesterday: 1
|