JJUG ナイトセミナー 「Elasticsearch特集」メモ①
とりあえず、1セッション目のメモ。 2つ目はきっと明日には・・・。
Elastic Stackで始めるJavaアプリのパフォーマンス監視
スライドはこちら
Elastic Stackで始めるJavaアプリのパフォーマンス監視 / Intro Elastic Stack and Elastic APM Java - Speaker Deck
elastic社は2012年創業。アメリカとアムステルダムに ElasticsearchはCEOの奥さんのレシピ検索のために作った
Elastic Stack
Beats、LogStash、Elasticsearch、Kibanaの組み合わせ。 公式のデモもある。
Beats
Go言語で書かれた軽量データシッパー(データ収集エージェント) 収集したデータの送信先はLogstash、Kafka、Elasticsearch等 大規模(数百台)だと、Kafkaを挟むことおすすめ 簡単なフィルター(INFO以下のログは送信しないとか)はあるが、変換とかパースはLogstash 採取したいデータがあるサーバーに設置 収集対象は様々で、公式・コミュニティで40種類以上のBeatがある k8sの場合、Beats系はDaemonSetで指定。
Logstash
データ加工パイプライン 元々はBeatsの役割も兼ねていたが、JRubyで書かれているため、起動に時間がかかる、メモリを食う等で評判悪かった。
Elasticsearch
分散型、高可用性の特性を持つ全文検索エンジン Wikipediaの検索もElasticsearch
Kibana
Elasticsearchに接続する解析と分析のView
APM
Java等のアプリケーションの情報収集ができる(Javaはまだベータ版・・・) 収集の流れはAPMエージェント→APMサーバー→Elasticsearch。 ViewはKibana。
Javaアプリの実行時に-javaagentで導入する。 Springの場合、Controllerの時間とその中で発行されたSQLを収集。 中の処理の時間を取得したい場合のAPIもある。
QAとか
PacketbeatでDBのアクセス情報が取得できる。 ・クエリの種類 ・発行されたクエリ SQLを分析し、インデックス貼ってないカラムへのSELECTとかを見つけるのに役立つ MySQLであれば3306のポートをウォッチしてるだけなので、DBに手を入れる必要なし
Elastic stackをk8sで動かすのは非推奨。 コンテナはステートレスであるべき。
fluentdとLogstashは使いやすい方を使えばいい。 データ取得でBeatsを使い、fluentdに送ることもできる。