Upgrade to Pro — share decks privately, control downloads, hide ads and more …

マイクロサービスのログ可視化

 マイクロサービスのログ可視化

SHIFT_EVOLVE

July 26, 2021
Tweet

More Decks by SHIFT_EVOLVE

Other Decks in Business

Transcript

  1. マイクロサービス

    ログ可視化
    ~分散トレーシング導入してみた~
    技術推進部オートメーションG
    秋葉 啓充
    2021/07/21

    View Slide

  2. アジェンダ
    • マイクロサービスの課題
    • 分散トレーシングの紹介
    • 実際に導入してみた

    View Slide

  3. マイクロサービスの課題
    • マイクロサービスは、互いのサービスへの影響を最小限化した疎結合なモデルで構成されています。裏を返せば、
    1つのリクエストにもかかわらず、複数のサービスをまたいで処理をしなければなりません。
    • 故にリクエスト全体の流れを分析することが難しくなり、そのままではトレーサビリティの低下を招くことになります。
    3
    どのサービスがつながっているんだ??

    View Slide

  4. 4
    そこで!!

    View Slide

  5. 分散トレーシングの紹介
    • 分散トレーシングとは、SpanとTraceという考え方でマイクロサービスのアプリケーションの監視やトラブルシュー
    ティング障害が発生した場所とパフォーマンスの低下の原因を特定します。
    5
    • Spanとは、1回のsqlの実行や、1回の外部へのリクエストなど、各操作の開始から終了を表します。
    • Traceとは、全体の開始から終了までのSpanの集合です。

    View Slide

  6. 分散トレーシング Jaeger
    Jaegerは、UberTechnologiesによってオープンソースとしてリリースされた分散トレースシステム
    です。 次のようなマイクロサービスベースの分散システムの監視とトラブルシューティングに使用され
    ます。
    • 分散コンテキストトレース
    • 分散トランザクション監視
    • 根本原因分析
    • サービス依存性分析
    • パフォーマンス/レイテンシーの最適化
    6
    https://www.jaegertracing.io/

    View Slide

  7. Jaeger技術仕様
    Jaegerの技術仕様は以下の通り
    • フロントエンドはReactによるUI実装
    • バックエンドはGoによる実装
    • サポートストレージバックエンド
    • Cassandra 3.4+
    • Elasticsearch 5.x, 6.x
    • メモリストレージ
    7

    View Slide

  8. 8
    実際に導入してみた

    View Slide

  9. 案件概要
    4月 5月 6月
    ・案件ご相談 ・お客様環境に見合ったログ監視サービス検討
    ・分散トレーシング機能試験導入
    ・分散トレーシング機能ブラッシュアップ
     お客様
     教育業界
     スケジュール
     体制図
    9

    View Slide

  10. ソフトウェア構成図
    10

    View Slide

  11. 実際に起きた出来事
    11
    5

    6

    • EKSにログを取得する仕組みがない為、そもそもログをどうやって集約してよいかがわからない
    • 出ているログを分析してみたが、統計を知ったところで使いどころがイメージがつかない
    • ElasticSearch Service があまりにも高い
    • ベトナムのホーチミンロックダウンに伴うオフィス出勤が禁止
    • ログ監視サービスが定まらない
    • 他サービスが、忙しくてクライアントを導入ができない
    • VPCの上限数に到達してサービス稼働できない
    • サービスURLがデプロイの度に毎度変わるので連絡が追いつかない
    • ログを参照したが、そもそもログがほとんど出ていない
    • ログ監視サービスを見られる人と見られない人がいる
    • サービス選択時に訳の分からない数値が出ていると言われる
    • UIが直感的に使えないという意見をもらう
    • 検索ができない、動かないと言われる
    • 膨大な資料を英語で渡される
    • これではエラー補足できないという意見をもらう
    • 各サービスがプロトコル・言語・フレームワークが統一されているわけではない
    • …… etc

    View Slide

  12. ログ監視サービスが定まらない
    開発会社 事例の
    多さ
    AWS
    マネージド
    導入
    経験
    特徴
    Jaeger Uberが
    開発 〇 - 〇 • Zipkinを
    元に作成
    X-Ray Amazon
    が開発 △ 〇 - • サービスマップ
    作成
    Instana Instana
    が開発 〇 - △ • パフォーマンス
    モニタリング
    Datadog Datadog
    が開発 △ - - • ダッシュボード
    による可視化
    Zipkin Twitter
    が開発 〇 - - • Javaで作成
    12
    • ログ監視サービスが乱立していてどれにするか決められない
    • 導入経験があり、デファクトのJaegerを試すことにした

    View Slide

  13. • 直感的に使えない(≒使い慣れていない)という意見と解釈して以下の対応を行いました
    • 操作マニュアル・ビデオを整備して配布
    • 検索条件に正規表現を使用できるように変更
    • 普段からローカルログで見るのではなく、Jaeger UI を使ってもらうようエスカレーション
    13
    UIが直感的に使えないという意見をもらう

    View Slide

  14. これではエラー補足できないという意見をもらう
    14
    { “log”: “2021-06-11 05:05:22.039
    [Account Service]
    XX.XXX.XXX.XX
    Root=1-XXXXXX-405811633a68259804ed32cd
    PATCH
    /accounts/api/userinfo
    http-hogehoge-58081-exec-10
    INFO
    jp.XXXXX.XXXXXX.account.infrastructure.XXXXX.XXXConfiguration
    185
    XXXAPIの結果メッセージ=¥"[BKE_0003](PF02)データベースの更新に失敗しました
    (TBL_PERSONAL)¥"¥n", "stream": "stdout" }
    エラーメッセージをINFOレベルで
    出力しているケースなども散見される
    ログの出力レベルの統一の為に
    ログフォーマット出力ガイドラインを作成して展開

    View Slide

  15. まとめ
    • 分散トレーシングを導入してみても、
    そもそもログが適切に吐かれていないとつらい
    15
    • マイクロサービスを可視化するには、
    分散トレーシングが有効

    View Slide

  16. ご清聴ありがとうございました

    View Slide