せてぃーずノート

Javaのイベント参加レポートとかを書いたりします。

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の組み合わせ。 公式のデモもある。

https://demo.elastic.co/

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に送ることもできる。