モニタリングおよびアラートシステムは、OCP(OpenShift Container Platform)およびKubernetesにデプロイされた標準のGAPスタック(Grafana、Alertmanager、Prometheus)を利用します。オペレーターとFEPClusterをデプロイする前に、GAPスタックが存在している必要があります。
Prometheusは、時系列メトリクスを格納するための簡単な方法です。 Grafanaは、Prometheusに保存されているFEPメトリクスのグラフを表示するための、柔軟で視覚的なインターフェースを提供します。
これらを組み合わせることで、ユーザーがスライスおよび分解してFEPデータベースの動作を確認できる大量のメトリクスを保存できます。また、これらのセットアップや使用方法などの問題に対処するための強力なコミュニティがあります。
Prometheusは、FEPコンテナの時系列データのストレージおよびポーリングコンシューマとして機能します。 Grafanaは、Prometheusにクエリを実行して、有益なグラフを表示します。
Prometheusルールが定義されている場合は、ルールを定期的に評価して、条件が満たされた場合にAlertmanagerにアラートを送信します。
さらに、Alertmanagerをメール、Slack、SMS、バックオフィスなどの外部システムと統合して、発生したアラートに対してアクションを実行できます。
FEPクラスタからのメトリクスは、FEP Exporterを使用してデプロイされたオプションのコンポーネントを介してPrometheusによって収集され、デフォルトのメトリクスセットと対応するPrometheusルールを使用してアラートを生成します。ユーザーは、カスタムメトリクスクエリを定義し、アラート用のカスタムPrometheusルールを定義することで、メトリクスを拡張または上書きできます。
FEPサーバのモニタリングの流れを以下に示します。
FEPExporterカスタムリソースはオペレーターによって管理されます
FEPExporterカスタムリソースが作成されると、オペレーターは次のkubernetesオブジェクトを作成します。
各ノードのデータベースクラスタからメトリクスを収集するためのデフォルトクエリとカスタムクエリを含むConfigMap
すべてのFEPClusterノードが接続してメトリクスを要求するためのJDBCURLを含むシークレット。 この文字列には、JDBC接続を確立するための認証の詳細も含まれています。
デフォルトのアラートルールに対応するPrometheusルール
FEPエクスポータサービスを検出するためのPrometheusのServiceMonitor
FEPExporterイメージを使用してすべてのFEPClusterノードからメトリクスをスクレイピングするFEPエクスポータコンテナ
注意
メール/メッセージ/チケットの発行を送信するためのバックオフィスへのAlertmanagerの統合は、環境に基づいてユーザーが行います
Grafanaのインストールと統合はユーザーが行います。 OperatorHubが提供するGrafanaオペレーターを使用します。
Grafanaダッシュボードは、ユーザーの要件とデザインに基づいてユーザーが作成します。
デフォルトでは、FEPExporterはサーバのいくつかの有用なメトリクスをスクレイプします。
FEPExporterが実行されると、ユーザーはOpenshift-> Monitoring-> Metricsサブメニューで収集されたメトリクスを確認できます。
FEPExporter.によって定義されたデフォルトのサーバメトリクスには2つの種類があります
種類 | 説明 |
---|---|
デフォルトで必須 | FEPExporterによって収集されます。FEPExporterによってデフォルトで必須に設定されており、ユーザーが無効にすることはできません。 |
デフォルトで有効 | 稼働状態とパフォーマンスに焦点を絞ったメトリクス。ユーザーが無効にすることができます。 |
デフォルトで必須のメトリクス
これらのメトリクスは、データベースの基本的な統計ビューまたはFEPExporter自身のメトリクスから取得されます。
このカテゴリの各種メトリクスは以下のとおりです。
メトリクス名 | 説明 |
---|---|
pg_stat_bgwriter_* | 統計収集で表示するマップ |
pg_stat_database_* | 統計収集で表示するマップ |
pg_stat_database_conflicts_* | 統計収集で表示するマップ |
pg_stat_archiver_* | 統計収集で表示するマップ |
pg_stat_activity_* | 統計収集で表示するマップ |
pg_stat_replication_* | 統計収集で表示するマップ |
pg_replication_slots_* | pg_replication_slotsシステムカタログへのマッピング |
pg_settings_* | pg_settingsシステムカタログへのマッピング |
pg_locks_* | pg_locksシステムカタログへのマッピング |
pg_exporter_* | エクスポータのメトリクスを公開
|
pg_* | エクスポータメトリクスを公開します
|
デフォルトで有効なメトリクス
データベースシステムの状態を評価するために追加されるいくつかの便利なクエリがあります。
メトリクス名 | 説明 |
---|---|
pg_capacity_connection_* | 接続に関するメトリクス(例: 1時間実行されているtxns) |
pg_capacity_schema_* | スキーマのディスク領域のメトリクス |
pg_capacity_tblspace_* | 表領域のディスク領域のメトリクス |
pg_capacity_tblvacuum_* | 数日間バキュームされていないテーブルのメトリクス |
pg_capacity_longtx_* | 5分以上実行されているトランザクションの数 情報を確認し、SQLの見直しとリソースの拡張を検討してください |
pg_performance_locking_detail_* | ブロック状態のプロセスの詳細 |
pg_performance_locking_* | ブロックされた状態のプロセスの数 |
pg_replication_* | レプリケーションがマスターより数秒遅れる場合、参照レプリカ内の最新のデータをチェックする機能を提供します この問題を解決するには、ネットワークリソースの増加や負荷の軽減などの対策を検討する必要があります |
pg_postmaster_* | ポストマスターが開始した時刻 |
pg_stat_user_tables_* | pg_stat_user_tablesからの重要な統計情報 |
pg_statio_user_tables_* | pg_statio_user_tablesからの重要な統計情報 |
pg_database_* | データベースサイズ データベースの容量が不足している場合は、データベースの復元が必要です |
pg_stat_statements_* | サーバによって実行されたSQLステートメントの統計 |
pg_capacity_tblbloat_* | テーブルのフェッチによる肥大化 |
pg_tde_encrypted_* | テーブルスペースの透過的データ暗号化の有無と格納されているテーブルとインデックス数 |
pg_password_valid_* | データベースロールのパスワードの有効期間 |
pg_not_set_password_valid_* | パスワードの有効期間が設定されていないデータベースロール数 |
注意
情報収集クエリで指定された値を変更することにより、情報が収集される間隔としきい値を調整できます。 詳細については、“オペレーターリファレンス”の付録にあるクエリを参照して設定してください。
以下の例を参照してください。
オペレーターによって設定される基本的なアラートルールを以下に示します。
アラートルール | アラートレベル | 条件の永続性 | 説明 |
---|---|---|---|
ContainerHighCPUUsage | Warning | 5分 | FEPサーバコンテナ/PodのCPU使用率がリソース制限の80%を超えています。 |
ContainerHighRAMUsage | Warning | 30分 | FEPサーバコンテナ/ポッドのメモリ使用量がリソース制限の80%を超えています |
PVCLowDiskSpace | Warning | 5分 | FEP PVC(ボリューム)の使用可能なディスクは10%未満です。 |
ContainerDisappeared | Warning | 60秒 | FEPサーバコンテナ/Podが60秒以内に削除されました。 |
PostgresqlDown | Error | - | FEPサーバがダウンしたか、アクセスできません。 |
PostgresqlTooManyConnections | Warning | - | FEPサーバコンテナ/Pod接続の使用量が使用可能な容量の90%を超えています。 |
PostgresqlRolePasswordCloseExpierd | Warning | - | パスワードの有効期限が7日未満のPostgresqlロールが存在します。 |
PostgresqlRolePasswordExpired | Warning | - | パスワードの有効期限が切れているPostgresqlロールが存在します。 |
** アラートは統計/指標に基づいています。 プラットフォームの統計が正しくない場合、誤ったアラームが発生する可能性があります。
例) ストレージドライバーがPVのバイト使用量の正しいメトリクスを表示していない場合、システムはPVCLowDiskSpaceの誤ったアラームを発生させる可能性があります。 この動作は、NFSストレージで見られます。
他の監視項目にアラートルールを追加することで、任意のアラートを構成できます。
デフォルトおよびカスタムのメトリクスを使用してカスタムダッシュボードを作成できます。
Grafanaダッシュボードのスクリーンショットの例を以下に示します