概要
入門 OpenTelemetryを読みました。 感想を記述します。
目的
技術的関心事として、オブザーバビリティ(o11y)があります。 o11y を実現するための手段の 1 つである OpenTelemetry(OTel)について解説している書籍ですので、読むことにしました。
事前知識
まったくの初心者というわけではなく、本書を読む前に以下の知識はありました。
- OTel の Go 言語 API & SDK のドキュメントを一通り読み、手動で実装した。実装ログは、zenn の scrap 【Go 編】OTel のドキュメントを読むに記載
- OTel 公式ドキュメント翻訳 PJ に関わっており、公式ドキュメントのどこに何が書いてあるか少し把握している状態
- Kubernetes のリソース監視としての Prometheus について少し知っている状態
読了時間
一度、1.5 時間ぐらいで流し読みして、そのあと 3~4 時間でわからない部分を飛ばしつつ読み終えました。
感想
本書は、公式ドキュメントを元に簡単な動作確認をしたあとに、OTel の概念をあらためて学ぶのに良い書籍だと思いました。
簡単な動作確認とは、OTel Collector の疎通、オブザーバビリティバックエンドへの送信、どれか 1 つの言語で簡単な計装などです。
私は curl と OTel Collector を接続して otel-tui や NewRelic にトレースを流したり、Go で OTel のシグナルの計装を一通り実装しました。
公式ドキュメントに記載されている用語と手を動かして記述した実装との照らし合わせができるため、理解が深まります。
一方で、実装例は疑似コードを除いてほとんどないため、まったくの初心者が本書から入門することはお勧めしません。
原書タイトルが「Learning OpenTelemetry」であって、あくまで理解を深めるための書籍だと思いました。
本書から入門しようとすると、あまり理解が深まらず、計装を経験した後に再度読みたくなると思いました。
個人的に本書の特に良かった点は下記です。
- OTel の思想や概念について学べる。特に API と SDK の違いや考え方、バージョニング周りについて参考になった
- インフラストラクチャのシグナルについての言及がある。CPU やメモリのメトリクスとアプリケーションのシグナル(ログ・トレース・メトリクス)をどのように扱うか検討されている
- OTel の導入事例についての紹介。深さ対広さ、コード対収集、中央集権型対分散型といった軸で実例ベースで紹介されていた。どのようにイネーブリングしていくかについてで興味深かった
個人的に理解が難しかった点は、「インフラストラクチャの観測」と「テレメトリーパイプラインの設計」の章の理解が難しかったです。 前者については、自身が Prometheus ベースのメトリクス計測しかしたことがないので、マネージドサービスのメトリクスの取得の場合はどのように対応するのか気になりました。 後者については、OTel Collector を配置(サイドカーパターン or 1 つのインスタンス)やサンプリングの話は、組織規模や o11y 成熟度に依存するものだと考え把握しきれませんでした。 o11y を浸透する上での本質的な内容だと思ったので、今後のキャリアでキャッチアップしていきたい領域だと考えています。
次に関連で勉強すること
次はコードを書くことで、本書読了後の理解度について把握したいと考えています。 具体的には以下です。
一方で、Prometheus 周りや別観点での OTel について知識を拡充したいため、下記の書籍も検討しています。 ただし、先述の内容を優先します。
まとめ
入門 OTel を読んで、今までなんとなく把握していた OTel の全容について解像度が上がったと思いました。 本書で言及されている実践的な内容について、理解を深めるべく個人的な範囲と中長期的なキャリアを通して学びたいと思いました。