APMツールをどうシステムに統合するか探るOpenAPM landscapeの紹介

Javaアプリのメトリクスを採取するのに、どのツールをどうつなげていったらイイ? Elasticsearchの下流にはKibana以外にどんなのがある? 今日はこのような疑問を抱えている人に役立つOpenAPM landscapeを紹介します。
2019.05.31

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。
OSS大好きなshoitoです。

JavaアプリやGoアプリのメトリクスを採取するのに、どのツールをどうつなげていったらイイんだろう?
Elasticsearchの下流にはKibana以外にどんなの考えられるんだろう?
今日はこのような疑問を抱えている人に役立つOpenAPM landscapeを紹介します。

OpenAPM landscape

OpenAPM landscapeは、オープンソースのAPM(Application Performance Management)ツールが構築・運用している技術スタックに適しているかを探れるOpenAPMが提供しているWebのツールです。

多分、何を言ってるのか分かりにくいと思うので、ちょっとでも興味を持っていただけたら、こちらのURLから実際にOpenAPM landscapeを試してみてください。

https://openapm.io/landscape

OpenAPM landscapeを触ってみる

Learn how to use the landscape のボタンを押すと使い方の説明が見られます。

説明を見ずに、画面したのアイコンを選択して、描き始めてもかまいません。 100以上のツールがカテゴリ毎に並んでいるので、例えば java, metrics のようにフィルタして、適しているものを絞り込むのが良いと思います。

ツールのアイコンを選択していくと、選択可能な接続先と接続元の情報に従い、自動的に図が描画されていきます。 また、接続先や接続元として選択可能なツールが何か探るということも可能です。

最終的に、描かれた図はURLを発行して、ツイッターやFacebook、Wikiなどで共有可能ですし、PNG画像としてダウンロードも可能です。

こんな感じのURLになります。
https://openapm.io/landscape?agent=elastic-apm-agent,elastic-beats&collector=elastic-apm,jaeger-collector,jaeger-agent&storage=elasticsearch&visualization=kibana,jaeger-query&dashboarding=kibana,grafana&instrumentation-lib=micrometer,jaeger-client

URLをクリックしていただくと、Elastic, Micrometer, Jaegerなどが繋がった、このような図が例として見られます。

おまけ

OpenAPM landscapeのデータモデルを別のツール郡にも応用できるんじゃないか?と思い、GitHubのソースコードを少し覗いてみました。
https://github.com/openapm/landscape-model

ロゴはlogosディレクトリにまとめられています。
https://github.com/openapm/landscape-model/tree/master/logos

モデルの例として、jaeger-collectorを見てみます。
https://github.com/openapm/landscape-model/blob/master/model/components/jaeger.yml#L62

logoの画像が描画され、connections.dataTo, connections.dataFromの定義に列挙されているツールが、OpenAPM landscape上でサジェストされていたのが分かりますね。
さすがに、レンダラの部分はOSSにはなっていませんでした。

最後に

OSS、またはそれ以外問わず、様々なツール群があり、自分が構築・運用しているサービスにどう適用できるのかイメージが掴みにくいことがありますが、OpenAPM landscapeに当てはめて見ることで、ツールの認識を改めたり、チームのメンバーに説明する際の手助けになりそうです。