Elasticsearchを使ったアプリケーション性能管理とは

Elasticsearchを使ったアプリケーション性能管理とは

Beatsファミリーの紹介

モチベーション

Observability

Observabilityの③つの柱

  • メトリック
  • ログ
  • トレーシング

Elastic APMの活用

機能要求グレード

  • IPAより公開
  • 6つのカテゴリーで評価
  • 可溶性、性能拡張性、運用保守性、移行、セキュリティ、システム環境・エコロジー
  • 性能とセキュリティは変動する

セキュリティ不正の検知

  • 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

  • Windows踏み台サーバでよく取るログイン関連のEventoLogが感単位取得できる
  • WinRmとWecsvcでイベントサブスクリプションでイベントログを集約してから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で運用手間が省ける