Elasticsearchを使ったアプリケーション性能管理とは
Elasticsearchを使ったアプリケーション性能管理とは
Beatsファミリーの紹介
モチベーション
Observability
Observabilityの③つの柱
- メトリック
- ログ
- トレーシング
Elastic APMの活用
機能要求グレード
セキュリティ不正の検知
- AWSだとRDSを使ってわかる
- SQLインジェクションとリクエストの関連性を見るのは大変
- Frogate、EC2レベルで検知できない
- 分散トレーシング(APM)に期待する
KIBANAでログ検知する方法
- loggingとmetricsはBeatsから
- tracingはElasticAPMから
Beatsファミリーの紹介
- Go言語で書かれている
- FileBeats、Metricbeats
- Packetbeat ワイヤーシャークとか
- Winlogbeat Winイベントログ→綺麗に送ってくれる
- Auditbeat LinuxのAuditログ
- Heatbeat サービスの稼動状態
- Functionbeat AWSLamda対応
Fluentdとの比較
- Rubyで書かれたプログラムだとリソースとる
- Beats(ElasticStack)ならリソースとらない
- Kafkaやredisに送ることができる
WinlogBeats
Elastic APM
分散トレーシング
- Zipkin,Opnecensus,Prometheusなどが話題
APMの歴史
- 2008年ごろに分散システム。SOAやESBが出てきた
- NewRelic、APPDYNAMICS、dynatrace
- 2016年ごろ、Microsevicesなどの登場を受けてAPM製品も進化
- INSTANA,DATADOCがでてきた
- ElasticAPMがこのなかで生まれた
APMのうり
測定できること
- HTTPリクエスト
- リクエスト数、エラー発生数
- レスポンスタイム
- アプリケーソンプログラム
- リクエスト数、エラー発生数
- レスポンスタイム
- SQL
- クエリ
- 実行回数
- レスポンスタイム
- トランザクション開始/コミット
代表的な機能
- TransactionDuration
- RequetsPerMinuets
- TransactionnDurationDistribution
- サーバ間プロセス間のトレーシングもできる
最近機能
- むかしはメモリリーク機能が重宝したが今はそれほどでない
APMの良いところ
- Logstatshやbeatを使えば、KIBANA場で統合できる
Agents監視
- 様々な言語に対応
- Angularも対応
データ構造
- Spans
- Transactions
- Errors エラー出力
- Metrics メモリ使用量など
弱み
- サポートしているエージェントがすないPHPがない
- UIが使いづらい
- 導入に手間がかかる(プロセスを指定する必要がある)
強み
- データ構造公開されている
- 他のElasticSearchと統合される
- ElasticCloudで運用手間が省ける