DBAtlas · データベース運用アトラス

Prometheus + Grafana によるデータベース監視

監視レベル: 中級所要時間: 60~120 分

中央の監視サーバー (Prometheus、Alertmanager、Grafana) を構築し、監視対象サーバーに node_exporter と選択したデータベースの exporter (PostgreSQL、MySQL、Oracle、SQL Server、MongoDB、Redis、Elasticsearch) を追加します。最小権限の監視ユーザー、systemd サービス、基本的なアラートルール、メール/Webhook 通知、データソースのプロビジョニング、既製のダッシュボードも含まれます。データベース構築ガイドの最後にある「監視を設定する」ステップの続きです。最終的に、全サーバーのメトリクスを 1 つの画面で確認でき、問題発生時に通知を送る監視環境が得られます。

構成: 監視サーバー 1 台 + 監視対象サーバー

開始前の確認

  • 監視サーバーと監視対象の Linux サーバーがサポート対象の OS で稼働し、時刻が同期している (chrony)。時刻のずれは Prometheus で "out of bounds" エラーや誤ったアラートの原因になります。
  • 監視サーバーに /var/lib/prometheus 用の十分なディスクがある: … 台 × … 日分として少なくとも数 GB。専用のディスク/LV を推奨します。CPU 2 個以上と RAM 4 GB 以上が必要です。
  • 監視サーバー (…) から各サーバーへの exporter のポートが開放されている: 9100 (node)…、9187 (PostgreSQL)……、9104 (MySQL)……、9161 (Oracle)……、9216 (MongoDB)……、9121 (Redis)……、9114 (Elasticsearch)……。SQL Server サーバーへは ……。ユーザーから監視サーバーへ … (Grafana)。
  • サーバーから github.com (exporter と Prometheus のバイナリ) へ、監視サーバーからはさらに …rpm.grafana.com…apt.grafana.com… へ HTTPS で接続できる。接続できない場合は、別のマシンでファイルをダウンロードしてコピーしてください。
  • PostgreSQL サーバーの pg_hba.conf に host all all 127.0.0.1/32 scram-sha-256 (またはより狭いルール) がある。exporter はローカルから TCP でパスワード認証により接続します。
  • 各データベースで監視ユーザーを作成できる管理者アカウントがある (PostgreSQL: postgres、MySQL: root、Oracle: SYSDBA、SQL Server: sysadmin、MongoDB: userAdmin、Redis: ACL 権限を持つユーザー、Elasticsearch: elastic)。
  • 監視ユーザーのパスワード用にパスワード保管庫にエントリを作成してください。パスワードはステップ内で対話的に入力を求められ、対応する exporter ユーザーのみが読み取れるファイル (0600) にのみ書き込まれます。

ガイドのフェーズ

  • 準備 — 基本ツールをインストールし、時刻を同期する · ファイアウォール: exporter のポートを監視サーバーに開放する · ファイアウォール: Grafana のポートを開放する
  • node_exporter (OS メトリクス) — node_exporter をダウンロードしてインストールする · node_exporter サービスを定義する · node_exporter を起動する
  • PostgreSQL: postgres_exporter — 監視ロールを作成する (pg_monitor) · 監視ロールのパスワードを設定する · postgres_exporter をダウンロードしてインストールする · 接続設定とパスワードファイルを作成する · postgres_exporter サービスを定義する · postgres_exporter を起動する
  • MySQL: mysqld_exporter — 監視ユーザーと exporter の資格情報ファイルを作成する · mysqld_exporter をダウンロードしてインストールする · mysqld_exporter サービスを定義する · mysqld_exporter を起動する
  • Oracle: oracledb_exporter — 監視ユーザーを作成する · oracledb_exporter をダウンロードしてインストールする · exporter の構成を作成する · oracledb_exporter サービスを定義する · oracledb_exporter を起動する
  • SQL Server: sql_exporter — 監視用ログインを作成する (SQL Server … 上) · sql_exporter をダウンロードしてインストールする · ターゲットの構成を作成する (…) · sql_exporter のサービステンプレートを定義する · sql_exporter を起動する (…)
  • MongoDB: mongodb_exporter — 監視ユーザーを作成する (mongosh) · mongodb_exporter をダウンロードしてインストールする · 資格情報ファイルを作成する · mongodb_exporter サービスを定義する · mongodb_exporter を起動する
  • Redis: redis_exporter — 監視ユーザーを作成する (ACL) · redis_exporter をダウンロードしてインストールする · 資格情報ファイルを作成する · redis_exporter サービスを定義する · redis_exporter を起動する
  • Elasticsearch: elasticsearch_exporter — 監視ロールとユーザーを作成する · elasticsearch_exporter をダウンロードしてインストールする · CA 証明書と資格情報ファイルを作成する · elasticsearch_exporter サービスを定義する · elasticsearch_exporter を起動する
  • Prometheus — Prometheus をダウンロードしてインストールする · スクレイプのターゲットを定義する (prometheus.yml) · アラートルールを作成する · 構成を検証する · Prometheus サービスを定義する · Prometheus を起動する
  • Alertmanager — Alertmanager をダウンロードしてインストールする · 通知の構成を作成する · 構成を検証する · Alertmanager サービスを定義する · Alertmanager を起動する
  • Grafana — Grafana のリポジトリを定義する · Grafana のリポジトリを定義する · Grafana をインストールする · セキュリティ設定を行う · Prometheus データソースを定義する (プロビジョニング) · ダッシュボードのプロビジョニングを定義する …
  • 検証 — すべてのターゲットが UP であることを確認する · ルールが読み込まれていることを確認する · テストアラートを送信する · Grafana のダッシュボードを確認する
  • インストール後 — 監視システムをバックアップする · セキュリティチェックリストを適用する
環境に合わせた手順プランを開く →