Docs Menu
Docs Home
/
MongoDB Atlas
/ /

Prometheus との統合

項目一覧

  • 制限
  • 前提条件
  • 手順
  • 構成例
  • Prometheus で使用できるパフォーマンス メトリクス
  • MongoDB メトリクス ラベル
  • MongoDB 情報メトリクス
  • ハードウェア メトリクス
  • ハードウェア メトリクス ラベル

Prometheus は指定された間隔で設定されたターゲットからメトリクスを収集し、ルール式を評価して結果を表示し、特定の条件が観察されたときにアラートをトリガーできます。

この統合により、Atlas を構成して、配置に関するメトリクス データを Prometheus インスタンスに送信することができます。

Atlas for Governmentは Prometheus 統合をサポートしていません。

  • Prometheus 統合は M10+ クラスターでのみ利用可能です。

  • Prometheus インスタンスが動作しています。動作するインスタンスをセットアップするには、「インストール ガイド」を参照してください。

  • Prometheus インスタンスをホストしているデバイスの IP を IP アクセス リストに追加します。

    注意

    IP アクセス リストに 0.0.0.0/0 を追加すると、パブリック インターネットのどこからでもクラスターにアクセスできるようになりますが、Atlas は Prometheus 統合を無効にします。

    0.0.0.0/0 がすでに IP アクセス リストに含まれている場合、Atlas は Prometheus 統合の構成を中止します。

  • (任意)Grafana を使用して Prometheus メトリクスを視覚化します。

Atlas と Prometheus の統合を構成する方法。

1
  1. まだ表示されていない場合は、希望するプロジェクトを含む組織を選択しますナビゲーション バーのOrganizationsメニュー

  2. まだ表示されていない場合は、ナビゲーション バーのProjectsメニューから目的のプロジェクトを選択します。

  3. Projects メニューの横にある Options メニューをクリックし、 Integrations をクリックします。

    プロジェクト統合ページが表示されます。

2
3

Prometheus 認証情報は、MongoDB Atlas の Prometheus 統合で使用するため特別に設計されています。 Atlas はこれらの認証情報を使用して、Prometheus 検出エンドポイントにのみアクセスし、Atlas ノードから Prometheus メトリクスをスクレイピングします。 これらの機能に厳密に制限され、モニタリング データへのアクセスと収集以外の権限や機能はありません。

重要

ユーザー名とパスワードを安全な場所にコピーします。この画面を離れた後は、パスワードにアクセスできません。

4
確認方法
説明

このメソッドには Prometheus v2.28 以降が必要です。HTTP エンドポイント経由でターゲットを検出するために、構成ファイルscrape_config 部分を自動的に生成します。

  1. Prometheus インスタンスをホストしているデバイスの IP を IP アクセス リストに追加します。これにより、Prometheus にネットワーク アクセスが付与され、Atlas クラスターからメトリクスをスクレイピングできます。0.0.0.0/0 がリストにないことを確認します。このエントリがあると、統合が無効になります。

  2. Atlas UI の Choose Discovery API Target Type ステップで、次のいずれかのタスクを実行します。

    • Public Internet Targets を選択します。

    • Private IP for Peering Targets を選択します。

    Atlas は、Prometheus 統合のプライベートエンドポイントをサポートしていません。

  3. 次のスニペットを Prometheus.yml ファイルの scrape_configs セクションに挿入し、Prometheus 統合の値で更新します。

    - job_name: "<insert-job-name>"
    scrape_interval: 10s
    metrics_path: /metrics
    scheme: https
    basic_auth:
    username: <insert-prometheus-user-id>
    password: <insert-password>
    http_sd_configs:
    - url: <url-of-the-service-discovery-configuration>
    refresh_interval: 60s
    basic_auth:
    username: <insert-prometheus-user-id>
    password: <insert-password>

この方法により、Prometheus は YAML または JSON ドキュメントを読み取って、スクレイピングするターゲットを構成できます。Discovery API にリクエストを送信し、その結果を targets.json ファイルに保存することで、ターゲットを提供する必要があります。

リクエストを行うには、次のいずれかのタブでプレースホルダー テキストを置き換えるか、別の言語で独自のスクリプトを作成します。

curl --header 'Accept: application/json'
# Sets the `Authorization` header on every scrape request with the
# username and password from the previous step.
--user <username>:<password>
# The URL that Prometheus fetches the targets from.
# Replace the <group-id> with the project ID of your Atlas instance.
--request GET "https://cloud.mongodb.com/prometheus/v1.0/groups/<group_id>/discovery"

requests ライブラリをインストールする必要がある場合は、「インストール ガイド」を参照してください。

import time, json, requests
# This script sets the `Authorization` header on every
# scrape request with the configured username and
# password. Then it tells Prometheus to fetch targets
# from the specified URL.
#
# Note: Replace the <username> and <password> with the
# values in the previous step, and <group-id> with the
# project ID of your Atlas instance.
basic_auth_user="<username>"
basic_auth_password="<password>"
discovery_api_url="https://cloud.mongodb.com/prometheus/v1.0/groups/<group_id>/discovery"
# The script updates your targets.json file every
# minute, if it successfully retrieves targets.
#
# Note: Replace the <path-to-targets.json> with the
# path to your targets.json file.
starttime = time.time()
while True:
r = requests.get(discovery_api_url, auth=(basic_auth_user, basic_auth_password))
if r.status_code == 200:
with open('<path-to-targets.json>', 'w') as f:
json.dump(r.json(), f)
time.sleep(60.0 - ((time.time() - starttime) % 60.0))

Discovery API の詳細については、「Prometheus の最新のターゲットを返す」を参照してください。

5
6
  1. 生成されたスニペットを scrape_configs にコピーする 構成ファイル の プレースホルダー テキストを置き換えます。

    どちらの方法を行う場合も、構成ファイル例を 参照してください

  2. Prometheus インスタンスを再起動します。

  3. Prometheus インスタンスで、上部のナビゲーション バーの Status をクリックし、Targets をクリックして配置に関するメトリクスを表示します。

HTTP SD またはファイル サービス検出メソッドを使用する場合の構成ファイル の例を、次に示します。

どちらのメソッドの構成ファイルにも、次のフィールドが含まれています。

フィールド
説明
scrape_interval
ターゲットをスクレイピングする頻度を示す時間。この設定では、最小時間単位が 10 秒となっています。
job_name
スクレイピングされたメトリクスに割り当てられた、人間が読めるラベル。
metrics_path
ターゲットからメトリクスを取得する場所を示す HTTP リソース パス。
scheme
リクエストに対して構成するプロトコル スキーム。
basic_auth
すべてのスクレイプ リクエストで使用する承認ヘッダー。

HTTP サービス検出メソッドには、次のサブフィールドを持つ http_sd_configs フィールドも含まれています。

フィールド
説明
url
Prometheus がターゲットを取得する URL。
refresh_interval
エンドポイントを再クエリするタイミングを示す時間。
basic_auth
API サーバーへの認証に使用する資格情報。
global:
scrape_interval: 15s
scrape_configs:
- job_name: "Cloud-Testing-mongo-metrics"
scrape_interval: 10s
metrics_path: /metrics
scheme : https
basic_auth:
username: prom_user_618d48e05277a606ed2496fe
password: fSIMUngfTmOTVEB4
http_sd_configs:
- url: https://cloud.mongodb.com/prometheus/v1.0/groups/618d48e05277a606ed2496fe/discovery
refresh_interval: 60s
basic_auth:
username: prom_user_618d48e05277a606ed2496fe
password: fSIMUngfTmOTVEB4

ファイル サービス検出メソッドには、次のサブフィールドを持つ file_sd_configs フィールドも含まれます。

フィールド
説明
files
メトリクスのスクレイピング対象を抽出するためのファイルを含むリスト。
global:
scrape_interval: 15s
scrape_configs:
- job_name: "Cloud-Testing-mongo-metrics"
scrape_interval: 10s
metrics_path: /metrics
scheme : https
basic_auth:
username: prom_user_618d48e05277a606ed2496fe
password: fSIMUngfTmOTVEB4
file_sd_configs:
- files:
- /usr/local/etc/targets.json

Atlas クラスターで Prometheus 統合を使用すると、次のメトリクスが利用できます。

各 MongoDB メトリクスには次のラベルが含まれています。

ラベル
説明
group_id
プロジェクトを識別するユニークな 16 進数の文字列。
org_id
組織を識別するユニークな 16 進数の文字列。
cl_role
クラスターのロールを定義する人間が判読できるラベル。
cl_name
クラスターを識別する人間が判読できるラベル。
rs_nm
レプリカセットを識別する人間が判読できるラベル。
rs_state
process_port
プロセスが実行されるポート。

mongodb_info は常に1の値を持つゲージです。 このメトリクスには、すべてのMongoDB メトリクス ラベルと、次のラベルが含まれます。

ラベル
説明
mongodb_version
メジャー、マイナー、およびパッチのバージョンを表す文字列。
replica_state_name
process_type
実行中のプロセスを示す文字列。その値は、mongodmongos、または config です。

注意

Prometheus 式ブラウザで各ハードウェア メトリクスの説明を表示することもできます。

名前
タイプ
説明
hardware_disk_metrics_disk_space_free_bytes
ゲージ
マウントされたファイル システムで使用可能なディスク容量。
hardware_disk_metrics_disk_space_used_bytes
ゲージ
マウントされたファイル システムで使用されたディスク領域。
hardware_disk_metrics_read_count
カウンター
処理された読み取り I/O の数。
hardware_disk_metrics_read_time_milliseconds
カウンター
読み取り要求の合計待機時間。
hardware_disk_metrics_sectors_read
カウンター
読み込まれたセクターの数。
hardware_disk_metrics_sectors_written
カウンター
書込まれたセクターの数。
hardware_disk_metrics_total_time_milliseconds
カウンター
このブロックの仕掛けがアクティブになっている合計時間。
hardware_disk_metrics_weighted_time_io_milliseconds
カウンター
I/O の実行に費やした時間の重み付け。
hardware_disk_metrics_write_count
カウンター
処理された書込み I/O の数。
hardware_disk_metrics_write_time_milliseconds
カウンター
書込みリクエストの合計待機時間。
hardware_platform_num_logical_cpus
ゲージ
現在のプロセスで使用可能な論理 CPU の数。
hardware_process_cpu_children_kernel_milliseconds
カウンター
このプロセスが子を待つためにカーネル モードでスケジュールされた時間。
hardware_process_cpu_children_user_milliseconds
カウンター
このプロセスが子を待機するためにユーザー モードでスケジュールされた時間。
hardware_process_cpu_kernel_milliseconds
カウンター
このプロセスがカーネルモードでスケジュールされた時間。
hardware_process_cpu_user_milliseconds
カウンター
このプロセスがユーザー モードでスケジュールされた時間。
hardware_system_cpu_guest_milliseconds
カウンター
Linux カーネルの制御下にあるゲスト オペレーティング システムの仮想 CPU の実行中に費やされた時間。
hardware_system_cpu_guest_nice_milliseconds
カウンター
調整された快適さでゲスト モードを実行するのに費やした時間。
hardware_system_cpu_idle_milliseconds
カウンター
アイドル タスクに費やされた時間。
hardware_system_cpu_io_wait_milliseconds
カウンター
I/O の完了を待機している時間。
hardware_system_cpu_irq_milliseconds
カウンター
割り込みの処理に費やされた時間。
hardware_system_cpu_kernel_milliseconds
カウンター
システム モードで費やした時間。
hardware_system_cpu_nice_milliseconds
カウンター
優先順位の低いユーザー モード(nice)で費やされた時間。
hardware_system_cpu_soft_irq_milliseconds
カウンター
softirqs サービスに費やした時間。
hardware_system_cpu_steal_milliseconds
カウンター
仮想環境で実行中に他のオペレーティング システムで費やされた時間。
hardware_system_cpu_user_milliseconds
カウンター
ユーザー モードで費やした時間。
hardware_system_memory_buffers_kilobytes
ゲージ
極端に大きくなることのない未加工ディスク ブロックの一時ストレージ。
hardware_system_memory_cached_kilobytes
ゲージ
ディスクから読み取られたファイルのインメモリ キャッシュ。これには SwapCached は含まれません。
hardware_system_memory_mem_available_kilobytes
ゲージ
スワップなしで新しいアプリケーションを起動するために使用できるメモリ量の推定値。
hardware_system_memory_mem_free_kilobytes
ゲージ
LowFreeHighFreeの合計。
hardware_system_memory_mem_total_kilobytes
ゲージ
使用可能な RAM の合計(物理 RAM からいくつかの予約ビットとカーネル バイナリ コードを差し引いたもの)。
hardware_system_memory_shared_mem_kilobytes
ゲージ
コンテンツが仮想メモリに存在するファイルシステムで消費されるメモリ量。
hardware_system_memory_swap_free_kilobytes
ゲージ
未使用のスワップ領域の合計量。
hardware_system_memory_swap_total_kilobytes
ゲージ
使用可能なスワップ領域の合計量。
hardware_system_network_eth0_bytes_in_bytes
カウンター
インターフェースが受信したデータのバイト数。
hardware_system_network_eth0_bytes_out_bytes
カウンター
インターフェースによって送信されたデータのバイト数。
hardware_system_network_lo_bytes_in_bytes
カウンター
インターフェースが受信したデータのバイト数。
hardware_system_network_lo_bytes_out_bytes
カウンター
インターフェースによって送信されたデータのバイト数。
hardware_system_vm_page_swap_in
カウンター
システムがディスクからスワップ インしたページ数。
hardware_system_vm_page_swap_out
カウンター
システムがディスクにスワップ アウトしたページ数。

各ハードウェア メトリクスには次のラベルが含まれています。

ラベル
説明
group_id
プロジェクトを識別するユニークな 16 進数の文字列。
org_id
組織を識別するユニークな 16 進数の文字列。
process_port
プロセスが実行されるポート。
disk_name
ディスクを識別する人間が判読できるラベル。

戻る

PagerDuty