未解決のアラートのクエリと表示

このページでは、GDC コンソールと Cortex エンドポイントの curl ツールを使用してオープン アラートをクエリして可視化し、問題の認識と問題の解決を行う方法について詳しく説明します。

Google Distributed Cloud(GDC)のエアギャップ環境のログと指標に基づいてアラートルールを作成すると、プロジェクトの未解決のアラートのモニタリングを開始できます。システム イベントによってトリガーされたアラートを GDC コンソールで可視化してフィルタリングできます。また、curl ツールを使用して Cortex から直接アクセスし、柔軟なスクリプト作成と自動化を行うこともできます。

未解決のアラートには、次の 2 つの方法でアクセスできます。

  • GDC コンソール: 特定のデータソースのアラート数、重大度、期間、ステータス、メッセージ、ラベルなどの情報を含む統合パネルでアラートデータを可視化します。GDC コンソールは、システム コンポーネントからのアラートをフィルタして分析するためのユーザー フレンドリーなインターフェースを提供します。
  • Cortex Alertmanager エンドポイント: より高度なユースケースでは、コマンドラインで curl ツールを使用して、プロジェクトの Cortex インスタンスを直接クエリします。Cortex は、プロジェクトの Alertmanager アラートを保存し、プログラムによるアクセス用の HTTP エンドポイントを提供します。このアクセス権を使用すると、データのエクスポート、タスクの自動化、cron ジョブの構成、カスタム統合の構築を行うことができます。

始める前に

アラートのクエリと可視化に必要な権限を取得するには、プロジェクトの IAM 管理者に、プロジェクトの Namespace で関連付けられている Project Cortex Alertmanager ロールのいずれかを付与するよう依頼してください。必要なアクセスレベルと権限に応じて、プロジェクト内のこのリソースに対する編集者ロールまたは閲覧者ロールを取得できます。

次の表に、PA personaRole 要件をまとめます。

ペルソナ オブジェクト クラスタ ロール 名前空間 グループ / ユーザー 構成
PA grafana org-admin project-cortex-alertmanager-viewer platform-obs グループ 1
PA grafana org-admin project-cortex-alertmanager-viewer platform-obs ユーザー 2

次の変数を適切に置き換えます。

変数 説明
KUBECONFIG この RoleBinding が適用される NAMESPACE を含む特定のクラスタの kubeconfig が必要になります。
RULE_NAME Namespace 内のこの RoleBinding リソースの一意の名前。例: io-root-cortex-prometheus-viewer
NAMESPACE この RoleBinding が作成され、適用される Kubernetes Namespace。前の表の Namespace 列を探します。
EMAIL_ADDRESS ロールが付与されるユーザーの ID。多くの場合、メールアドレスです。例: infrastructure-operator@example.com
ROLE ユーザーに付与する権限を含む Role の名前。前の表に記載されているロールを探します。
GROUP_NAME ユーザーに付与する権限を含む Role の名前。例: io-group
ZONE ゾーンの名前

構成 1

この構成は PA ペルソナ用で、org-admin クラスタの grafana オブジェクトをターゲットにしています。platform-obs Namespace 内の project-cortex-alertmanager-viewer ロールを Group に付与します。

  • kubectl コマンド

    一般的なコマンド形式は次のとおりです。

    kubectl --kubeconfig `KUBECONFIG` create rolebinding `RULE_NAME` -n platform-obs --group=`GROUP_NAME` --role=project-cortex-alertmanager-viewer
    

    例:

    kubectl --kubeconfig <path-to-kubeconfig> create rolebinding project-cortex-alertmanager-viewer-binding --role=project-cortex-alertmanager-viewer --group=my-team --namespace=platform-obs
    
  • IAC ファイルパス

    /infrastructure/zonal/zones/`ZONE`/org-admin/rolebindings/`GROUP_NAME`/<YAML_FILE>
    
  • Yaml ファイル

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: RULE_NAME
      namespace: platform-obs
    subjects:
    - kind: Group
      name: GROUP_NAME
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: Role
      name: project-cortex-alertmanager-viewer
      apiGroup: rbac.authorization.k8s.io
    

構成 2

この構成は PA ペルソナ用で、org-admin クラスタの grafana オブジェクトをターゲットにしています。platform-obs Namespace 内の project-cortex-alertmanager-viewer ロールを User に付与します。

  • kubectl コマンド

    一般的なコマンド形式は次のとおりです。

    kubectl --kubeconfig `KUBECONFIG` create rolebinding `RULE_NAME` -n platform-obs --user=`EMAIL_ADDRESS` --role=project-cortex-alertmanager-viewer
    

    例:

    kubectl --kubeconfig <path-to-kubeconfig> create rolebinding project-cortex-alertmanager-viewer-binding --role=project-cortex-alertmanager-viewer --user=my-email@example.com --namespace=platform-obs
    
  • IAC ファイルパス

    /infrastructure/zonal/zones/`ZONE`/org-admin/rolebindings/`EMAIL_ADDRESS`/<YAML_FILE>
    
  • Yaml ファイル

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: RULE_NAME
      namespace: platform-obs
    subjects:
    - kind: User
      name: EMAIL_ADDRESS
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: Role
      name: project-cortex-alertmanager-viewer
      apiGroup: rbac.authorization.k8s.io
    

    これらのロールの詳細については、IAM 権限を準備するをご覧ください。

オープン アラートを表示してフィルタする

プロジェクトの Namespace から未解決のアラートをクエリしてフィルタするには、次のいずれかの方法を選択します。

コンソール

GDC コンソールでプロジェクトの未解決のアラートを表示します。

  1. GDC コンソールにログインします
  2. GDC コンソールで、プロジェクトを選択します。
  3. ナビゲーション メニューで、[オペレーション] > [アラート] を選択します。
  4. [アラート] タブを選択します。
  5. アラートのリストを表示します。
  6. [Alerts opened] セクションで、[Filter] をクリックして、未解決のアラートのみを表示します。他のプロパティ名または値でアラートをフィルタすることもできます。
  7. アラート名をクリックすると、アラートの詳細が表示されます。

Cortex エンドポイント

このセクションでは、Cortex Alertmanager エンドポイントを使用してアラートにアクセスする方法について説明します。

Cortex エンドポイントを特定する

次の URL は、プロジェクトの Cortex インスタンスのエンドポイントです。

  https://GDC_URL/PROJECT_NAMESPACE/cortex/alertmanager/

次のように置き換えます。

  • GDC_URL: GDC 内の組織の URL。
  • PROJECT_NAMESPACE: プロジェクトの Namespace。

    たとえば、org-1 組織の platform-obs プロジェクトの Cortex エンドポイントは https://org-1/platform-obs/cortex/alertmanager/ です。

curl リクエストを認証する

  1. gdcloud CLI をダウンロードしてインストールします
  2. gdcloud core/organization_console_url プロパティを設定します。

    gdcloud config set core/organization_console_url
    https://GDC_URL
    
  3. 構成済みの ID プロバイダでログインする:

    gdcloud auth login
    
  4. ユーザー名とパスワードを使用して認証し、ログインします。

    ログインに成功すると、gdcloud auth print-identity-token コマンドを使用して curl リクエストで認証ヘッダーを使用できます。詳細については、gdcloud auth をご覧ください。

Cortex エンドポイントを呼び出す

curl ツールを使用して Cortex エンドポイントにアクセスする手順は次のとおりです。

  1. curl リクエストを認証します
  2. curl を使用して Cortex エンドポイントを呼び出し、標準の Alertmanager API 仕様(https://prometheus.io/docs/prometheus/latest/querying/api/#alertmanagers)を使用して URL を拡張し、アラートをクエリします。

    curl リクエストの例を次に示します。

      curl https://GDC_URL/PROJECT_NAME/cortex/alertmanager/api/v1/alertmanagers \
      -H "Authorization: Bearer $(gdcloud auth print-identity-token \
      --audiences=https://GDC_URL)"
    

    コマンドの後に次の出力が表示されます。API レスポンスは JSON 形式です。