Oracle Cloud Hangout Cafe Season4 #4「Observability 再入門」(2021年9月8日開催)

2024年4月23日(火)
市川 豊
第2弾の連載第5回では、2021年9月8日に開催された「Oracle Cloud Hangout Cafe Season4 #4『Observability 再入門』」の発表内容に基づいて紹介していきます。

Metrics / Logs / Traces & Tool

ここからは、メトリクス、ログ、トレースについてツールと合わせて詳しく見ていきます。

Metrics

メトリクスとは「CPU使用率やメモリ使用量などを特定の時間間隔で測定し統計した数値データ」と先に説明しました。ある一時点の事実としてのデータであるため、経時的に測定する必要があります。また、よく利用される方法として閾値を設けて、その閾値を超えた場合にアラートを出して通知する方法も用いられます。メトリクスの主な例としてはCPU・メモリ使用率、リクエスト数、ネットワーク通信量です。

メトリクス監視を始める上で、収集するメトリクスを何にすべきか戸惑う場合があります。もちろん、システムによるケースバイケースもありますが、リソースをベースとした「USE」とサービスをベースとした「RED」というメトリクス取集の指標があります。また『SREサイトリライアビリティエンジニアリング』という書籍では、The Four Golden Signalsとして4つのメトリクスを挙げています。合わせて表で整理します。

指標 概要
USE Utilization : リソースの単位時間あたりの使用率(例:CPU、メモリの使用率等)
Saturation : リソースの飽和状況(例:実行キューの長さ等)
Error : エラーイベントのカウント(例:ネットワーク、 I/O のエラーなどをカウント)
RED Rate(Request) : 秒間のリクエスト数
Error : 失敗しているリクエスト数
Duration : リクエストの処理に要した時間
The Four Golden Signals Latency : リクエストを処理するのに要した時間。正常なレスポンスと異常なレスポンスは分けるようにする
Traffic : システムに対するリクエスト量。リクエスト数やネットワーク I/O 、セッション数など
Error : 処理の失敗
Saturation : リソースの飽和状況。メモリ、ディスク、CPU や I/O など

・Prometheus
ここからは、メトリクスを取集するツールを紹介します。発表では、OSS(オープンソースソフトウェア)の1つとしてPrometheusを紹介しました。

PrometheusはPull型のメトリクス監視システムで、Kubernetesとも親和性が高く、サービスディスカバリ機能により監視対象を自動的に見つけることができます。以下、主な特徴です。

  • クラスタ全体のリソース監視
  • PodごとのCPU、RAM、ネットワーク使用量の監視
  • ラベルを利用したメトリクス管理
  • メトリクス集約に特化した独自クエリ言語(PromQL)を持つ

Prometheusのアーキテクチャは下図の通りです。

Prometheus Architecture【出典】What is Prometheus?

ここで、メトリクス収集におけるPush型とPull型を整理します。Push型は監視対象システムにエージェントをインストールして、そのエージェントから監視システムにメトリクスを送信します。Pull型は監視システムから監視対象システムのメトリクスを受信します。

PrometheusはPull型で、監視対象システムのExporterという軽量なHTTPサーバにリクエストを送信して、レスポンスを受信する仕組みです。Prometheusにはサービスディスカバリ機能が実装されているため、監視対象のリスト(IPアドレスやポート番号など)を動的に更新して運用への影響を回避できます。

Push型とPull型

・Push型とPull型

Exporterはターゲットが持つ独自形式のメトリクスをExporterが取得して、Prometheusが処理できるフォーマットに変換する役割を担います。

Exporterについて

Podデザインパターンの1つであるアダプタパターンを利用して取得することもできます。

アダプタパターン

また、PrometheusはExporter経由ではなく、アプリケーションにクライアントライブラリを実装することでアプリケーションから直接メトリクスを取得することもできます。

クライアントライブラリの実装

・ラベル管理
ここまで、Promehteusにおけるメトリクス収集の仕組みについて説明してきましたが、ここからは取得するメトリクスを効率的に扱うラベル管理について見ていきます。

Prometheusはメトリクスを区別するためにラベルを利用できます。ラベルは、メトリクス集約に特化した独自クエリ言語であるPromQLを利用して集約対象の絞り込みなどを行えます。ラベルはメトリクスを出力する際に付与されます。主な仕様については下図の通りです。

ラベルによるメトリクス管理

以下は、sample-web-serviceというPodが受けたリクエスト数の10分間平均を求める例です。

rate(http_requests_total{pod=”sample-web-service”}[10m])

PrometheusのWeb UIを利用してフォームにPromQLを入力し、実行すると結果を表示できます。メトリクス名、ラベルフィルタリング、正規表現フィルタリングなどが行えます。

検索例

最後に、Prometheusの通知に関わるAlertmanagerコンポーネントについて見ていきます。

・Alertmanager
Prometheusには通知を実行する機能が実装されていないため、Alertmanagerコンポーネントと連携する必要があります。Alertmanagerコンポーネントの主な特徴は、以下の通りです。

  • Alertmanagerは通知に特化したコンポーネント
  • 収集したメトリクスにアラートとして発報するルールを設定できる
  • ルールはPromQLで設定され、定期的に評価されて条件が満たされるとアラートがAlertmanagerに送信される
  • アラートはメールやSlackなどへ通知できる
  • 通知間隔、連続通知抑止、グルーピングなど管理できる
  • アラート、通知に関するものはPrometheusでなくAlertmanagerで管理

Alertmanager

Prometheusはメトリクスの取集や管理が中心となりますが、その集約したデータを可視化する上でよく一緒に利用されるOSSがGrafanaです。Grafanaについて少し触れておきます。

・Grafana
Grafanaはデータの可視化、監視、およびアラートのためのOSSです。非常にユーザーフレンドリーで、多くのデータソースと連携できます。主な特徴は、以下の通りです。

  • データの可視化: Grafanaを使用すると、様々なデータソースから収集したデータを視覚的なダッシュボードに表示できる、ダッシュボードはカスタマイズ可能でグラフ、チャート、表など、さまざまな形式でデータを表示できる
  • 多様なデータソースのサポート: GrafanaはPrometheusのようなメトリクスデータだけでなく、InfluxDB、MySQL、PostgreSQLなど多くの一般的なデータベースや時系列データベースに対応
  • アラート機能: Grafanaにはアラート機能があり、特定の条件を満たした場合に通知を送ることができる
  • カスタマイズと拡張性: ユーザは自分のニーズに合わせてダッシュボードをカスタマイズできる、多数のプラグインを通じて機能を拡張することもできる
日本オラクル株式会社

Oracle Groundbreaker Advocate
Principal Cloud Solution Engineer

これまで、インフラエンジニア、フロントエンドエンジニアとして官公庁のシステム基盤を中心としたサーバの設計構築、運用保守、Webシステム開発を担当。技術教育者として専門学校でクラウド技術やOSS(Linux、Docker、Kubernetes)の授業を担当し、企業様向けプライベートトレーニング講師も担当。 アドボケート/エバンジェリストとしてミートアップ、カンファレンスで登壇。現在は、クラウドネイティブ技術を中心とするソリューションエンジニアとして活動。クラウドネイティブ技術に関連するコミュニティの運営にも積極的に参加。

Community:
Oracle Cloud Hangout Cafe メンバー (#ochacafe)
CloudNative Days Tokyo 実行委員会メンバー (#CNDT)

Book:
著書「Dockerコンテナ開発・環境構築の基本」(インプレス)
共著「RancherによるKubernetes活用完全ガイド」(インプレス)、「コンテナ・ベース・オーケストレーション Docker/Kubernetesで作るクラウド時代のシステム基盤」(翔泳社)

連載バックナンバー

仮想化/コンテナ技術解説
第6回

Oracle Cloud Hangout Cafe Season 4 #5「Kubernetesのオートスケーリング」(2021年8月4日開催)

2024/5/29
第2弾の連載第6回では、2021年8月4日に開催された「Oracle Cloud Hangout Cafe Season4 #5『Kubernetesのオートスケーリング』」の発表内容に基づいて紹介していきます。
仮想化/コンテナ技術解説
第5回

Oracle Cloud Hangout Cafe Season4 #4「Observability 再入門」(2021年9月8日開催)

2024/4/23
第2弾の連載第5回では、2021年9月8日に開催された「Oracle Cloud Hangout Cafe Season4 #4『Observability 再入門』」の発表内容に基づいて紹介していきます。
仮想化/コンテナ技術解説
第4回

Oracle Cloud Hangout Cafe Season6 #4「Pythonで作るAPIサーバー」(2022年12月7日開催)

2024/3/21
第2弾の連載第4回では、2022年12月7日に開催された 「Oracle Cloud Hangout Cafe Season6 #4『Pythonで作るAPIサーバー』」の発表内容に基づいて紹介していきます。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています