あふん

ぷろぐらむとか

OpenCensus meetup vol.1 に参加してきた

f:id:ponde_m:20190404184917p:plain:w300

opencensus.connpass.com

参加してきました。抽選倍率高めだったのでブログ枠にしました。書きます。 メモはしたけどスライドが全部公開されていて、見ればだいたい書いてあるので感想成分多めでいきます。

私のステータスとしては OpenCensus の存在は知ってるけど実際に手を動かして触ったことはないみたいな感じでこの勉強会に参加してました。

OpenCensus Intro and Status Update

docs.google.com

OpenCensus の概要から今後の展望の話とかをしていただきました。OpenCensus が Collector と Exportor に別れているから、送信するバックエンドを変えるときは Exportor だけ変えればいいんだよぐらいの話は把握してたんですけど、Stats/Metrics の方の話とかなんにも知らなかったので勉強になりました。

OpenCensus Service についてはなにも知らなくて今回初耳だったんですけど、Exportor 自体はそれぞれのバックエンドに依存していてアプリの中に組み込まれているのでバックエンドの切り替え時にはコードに手を入れなきゃいけない、ので Agent として外に切り出そう、みたいな思想は良いなーと思ったので今後に期待したいです。

デザインドキュメント軽く読んでたら OpenCensus 以外からのデータも OpenCensus Agent で受け取れるように Recevier 用意して拡張できたりするんですね、すごい。

f:id:ponde_m:20190404194006p:plain:w500

opencensus-service/DESIGN.md at master · census-instrumentation/opencensus-service · GitHub

OpenCensusを実際に使ってみて、便利なところと、困ってるところ

docs.google.com

GCPSDK に OpenCensus が組み込まれてるの、めちゃくちゃ便利そう。基本 Trace 情報はサンプリングされているので、ダメだったやつピンポイントで Trace が見たいけど難しい。trace.AlwaysSample{} で全部出力しようとしたけど buffer full になって捨てられた。みたいなつらいお話が聞けました。サンプリングで欲しいのが取れない話、割と聞くので苦労ポイントっぽい。Trace の Span だけ見てないでその瞬間の CPU などの他の Metrics も考慮しようって話はいいお話でした。

Distributed Tracing with OpenCensus at Wantedly

Wantedly さんの発表。OpenCensus を導入した背景から、入れてみた課題について触れられていました。技術選定のときにどういうことを考えて OpenCensus を選択したとか、実際のマイクロサービスでは共通ライブラリに実装を入れていて、検索用にメタデータには Kubenetes の情報とか Request ID/User ID とか入れてるよとかの情報が聞けて学びがありました。

Exporter がコードに依存するのでライブラリのアップデートなどのつらみがあったり、使ってる言語での Exporter 実装がなかったりしたときにつらいことになるので OpenCensus Service によってアプリとベンダが分離された世界になると嬉しいとのことでここでも期待されてる感じでした。

OpenCensus Javaで始めるOpenCensus

docs.google.com

Java のお話でした。お仕事のでは Java と Spring Boot 使ってたりするんですが、Spring Cloud Sleuth なるものがあるんですね。知らなかった。

spring.io

JavaのCustom Exporterを書いてみた / Writing custom exporter for Java

docs.google.com

JavaAWS X-Ray Exporter を作ったというお話でした。200 行ぐらいでメインのロジックは書けたらしい、すごい。

github.com

TracingとLoggingの連携 / Tracing and logging correlation

github.com

f:id:ponde_m:20190404235018p:plain:w500

Jaeger を使って Trace 情報と Log を紐づけるお話でした。デモアプリケーションがサクッと動くので動かすとわかりやすいです。

OpenCensus の Span には Log フィールドがないので annotations に入れとくと Jaeger Exporter が OpenTracing Span の Log に変換してくれるらしいです。このへんこのへん

Gopher くんはニンジンが好きらしい。かわいい。

OpenCensus Stats で PaaS のメトリクスを補完する / Interpolate PaaS metrics with OpenCensus Stats

docs.google.com

OpenCensus Stats のお話。アプリケーションメトリクスも OpenCensus で取得できるよとのことでした。OpenCensus についてまさに Trace しか知らない人間だったので学びしかありませんでした。

Ruby実装について / About Ruby implementation

Wantedly さんで OpenCensus の Ruby 実装 やっていくぞというスライド。かっこいい。

ウェブフロントエンドからサーバーまでの一気通貫のトレーシングに挑戦してみる / Try consistent tracing from web frontend to backend servers

docs.google.com

フロントエンドからの Tracing のお話。WebSocket でサーバに繋いで start/end を代わりに実行してもらう感じらしい。

この LT で Observability は港区用語。というパワーワード爆誕していて笑いました。

おわりに

OpenCensus 全然わかってなかったので本当に勉強になりました。これからは手を動かしていきたい。

今回が初回の勉強会だったのですが、OpenCensus マジヤバイとか言って流行らせると2回目が開催されるらしいので布教していきたいと思います。

OpenCensus マジヤバイ