SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Developers Summit 2022 Summer レポート(AD)

いまさら聞けない「メトリクス」とは?――注目を集めるオブザーバビリティの実現にどう役立つのか 【デブサミ2022夏】

【A-2】入門 メトリクス

  • このエントリーをはてなブックマークに追加

オブザーバビリティを実現するために――メトリクスの実用例を紹介

 このように便利で使いやすいツールであるメトリクスだが、限界もある。第一は非常に高いカーディナリティのデータには向かないこと。requeset.countをユーザーごとに見るのはその一例だ。「どういうユーザーがどのぐらいのリクエストを出しているか見るために、ディメンションを安易に追加してしまうと、カーディナリティが爆増してしまい、クエリも時間がかかるようになる」(大谷氏)

 メトリクスの実用例として、StatsDの活用が挙げられる。StatsDは2011年ぐらいからブログなどでも紹介されている、UDP/TCPで送信されるカウンターやタイマーなどのメトリクスを受け付け、Graphiteなどのバックエンドの時系列データベースなどに送信するサービスである。

 インターフェースはシンプルなので、「いろいろな言語のクライアントに実装やインテグレーションされている。かなり歴史あるツールだが、現在もさまざまな現場で活躍しているのではないか」と大谷氏は言う。

 StatsDはGraphiteやOpenTelemetry Collector、Prometheusとも容易に連携できる。例えばOpenTelemetry Collectorであれば、2行ほど追加するだけで、メトリクスがレポートできるようになる。「詳しく知りたい方は、『入門OpenTelemetry Collector』で検索すると私の過去コンテンツが読めると思う」と大谷氏。

 また、SaaSによっては「利用料金が跳ね上がることもあるので、注意が必要」と大谷氏は警鐘を鳴らす。第二に、状況の把握には限界があること。例えばCPU使用率が上がったことは分かるが、その理由についてはメトリクスだけで把握することは難しい。だが、ログやトレースなど、他のテレメトリデータを合わせて利用することで、その限界を低減できる。

OpenTelemetry Collectorを少し変更するだけで、Splunkにエクスポートできる OpenTelemetry Collectorを少し変更するだけで、Splunkにエクスポートできる
OpenTelemetry Collectorを少し変更するだけで、Splunkにエクスポートできる

 OpenTelemetry Collectorではなく、Prometheusを使っている人も増えている。そんな人にオススメなのが、Prometheus+OpenMetricsという組み合わせ。Prometheusはメトリクスを扱う、オープンソースのシステム監視・アラームツールキットである。「特徴はpull型アーキテクチャであること」と大谷氏。

 HTTPでリクエストを受け付けるexporterを監視対象に備えることで、エンドポイントにリクエストを出してその内容をよい加減で集計して、アラートを出したりダッシュボードに表示したりする。

 「Kubernetesとの親和性がかなり高く、各種ツールとの連携も豊富。Prometheusの環境を整備すれば、ほぼメトリクスに関してはカバーできる。そんなエコシステムになっている」(大谷氏)

 前述したように、Prometheusはexporterで監視対象からメトリクスを集約する。そのPrometheusのエクスポートの仕組みを切り出して、整理するためのプロジェクトがOpenMetricsである。「エンドポイントの仕様の整理をはじめ、メトリクス名やデータモデルの整理もしてくれる」(大谷氏)

 Prometheusを使って何ができるのか。その例として大谷氏が示したのが、Spring Bootのサンプルアプリケーション「Spring PetClinic Sample Application」。これをそのまま動かすと、各サービスはMicrometerでメトリクスを計測され、micrometer-registry-prometheusでエクスポーズ、Prometheusがスクレイプし、Garafanaで可視化できる。「Prometheusの中身はシンプルだが、パワフルで拡張性が高い形で動かすことができる」(大谷氏)

 さらにOpenTelemetryとPrometheus環境と組み合わせて使うことも簡単にできることもデモを通じて紹介。「opentelemetry-demo-webstore」を使えば、OpenTelemetry Collectorを通じて、PrometheusやJaegerで管理できる環境が比較的すぐに立ち上げられる。また、OpenTelemetry Collectorを少し変更するだけで、Splunk Observabilityをはじめ、任意のバックエンドにメトリクスをエクスポートできるようになる。「少しの変更で、Prometheusを使っている環境からバックエンドを切り替えることができる。それがOpenTelemetryを活用する面白さ」と大谷氏は語る。

 最後に大谷氏は「メトリクスは古典的なツールだが、改めてそれがどんなツールなのか、それを理解した上で別のツールとどのように使い分けていけばいいのか、それらの点を意識して便利に使ってほしい」と語り、セッションを締めた。

関連リンク

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Developers Summit 2022 Summer レポート連載記事一覧

もっと読む

この記事の著者

中村 仁美(ナカムラ ヒトミ)

 大阪府出身。教育大学卒。大学時代は臨床心理学を専攻。大手化学メーカー、日経BP社、ITに特化したコンテンツサービス&プロモーション会社を経て、2002年、フリーランス編集&ライターとして独立。現在はIT、キャリアというテーマを中心に活動中。IT記者会所属。趣味は読書、ドライブ、城探訪(日本の城)。...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/16312 2022/09/08 17:04

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング