Membuat kueri dan melihat pemberitahuan terbuka

Pemantauan pemberitahuan di perangkat Google Distributed Cloud (GDC) dengan air gap memungkinkan Anda melacak dan memecahkan masalah notifikasi aktif di seluruh project setelah membuat aturan pemberitahuan. Anda dapat memeriksa tingkat keparahan, durasi, status, dan label pemberitahuan di konsol GDC. Untuk pembuatan skrip, cron job, dan integrasi kustom, buat kueri endpoint HTTP Cortex Alertmanager project Anda dengan curl.

Sebelum memulai

Untuk mendapatkan izin yang Anda perlukan untuk membuat kueri dan memvisualisasikan pemberitahuan, minta Project IAM Admin untuk memberi Anda salah satu peran Project Cortex Alertmanager terkait di namespace project Anda. Bergantung pada tingkat akses dan izin yang Anda perlukan, Anda mungkin mendapatkan peran editor atau pelihat untuk resource ini dalam sebuah project.

Untuk mendapatkan izin yang diperlukan untuk mengekspor log, minta Project IAM Admin untuk memberi Anda peran Project Grafana Viewer (project-grafana-viewer). Proses kontrol akses berbasis peran ini memungkinkan Anda mengakses visualisasi data dengan aman. Untuk mengetahui informasi selengkapnya tentang peran ini, lihat Menyiapkan izin IAM.

Tabel berikut merangkum persyaratan Role untuk PA and AO persona.

Persona Objek Cluster Peran Namespace Grup/Pengguna Konfigurasi
PA alertmanager org-admin project-cortex-alertmanager-viewer platform-obs Grup 1
PA alertmanager org-admin project-cortex-alertmanager-viewer platform-obs Pengguna 2
AO alertmanager org-admin project-cortex-alertmanager-viewer PROJECT_NAMESPACE Grup 1
AO alertmanager org-admin project-cortex-alertmanager-viewer PROJECT_NAMESPACE Pengguna 2

Ganti variabel berikut dengan tepat:

Variabel Deskripsi
KUBECONFIG Anda akan memerlukan kubeconfig untuk cluster tertentu yang berisi NAMESPACE tempat RoleBinding ini akan diterapkan.
RULE_NAME Nama unik untuk resource RoleBinding ini dalam namespace. Contoh, pa-cortex-alertmanager-viewer.
NAMESPACE Namespace Kubernetes tempat RoleBinding ini akan dibuat dan diterapkan. Cari kolom Namespace di tabel sebelumnya.
EMAIL_ADDRESS ID untuk pengguna yang diberi peran. ID ini sering kali berupa alamat email. Misalnya, platform-administrator@example.com.
ROLE Nama Role yang berisi izin yang ingin Anda berikan kepada pengguna. Cari peran yang tersedia di tabel sebelumnya
GROUP_NAME Nama Group yang mencakup pengguna PA/AO. Contoh, pa-group.
ZONE Nama Zona

Konfigurasi 1

Konfigurasi ini memberikan izin kepada grup pengguna untuk mengakses pemberitahuan PA/AO di cluster org. Setelah menyiapkan konfigurasi ini, lihat bagian konsol dalam dokumen ini untuk melihat pemberitahuan di konsol GDC.

  • Perintah Kubectl

    Berikut adalah format perintah umum:

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

    Contoh:

    kubectl --kubeconfig <path-to-kubeconfig> create rolebinding project-cortex-alertmanager-viewer-binding --role=project-cortex-alertmanager-viewer --group=my-team --namespace=platform-obs
    
  • File Yaml

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

Konfigurasi 2

Konfigurasi ini memberikan izin kepada pengguna untuk mengakses pemberitahuan PA/AO di cluster org. Setelah menyiapkan konfigurasi ini, lihat bagian konsol dalam dokumen ini untuk melihat pemberitahuan di konsol GDC.

  • Perintah Kubectl

    Berikut adalah format perintah umum:

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

    Contoh:

    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
    
  • Jalur File IAC

    /infrastructure/zonal/zones/`ZONE`/org-admin/rolebindings/`EMAIL_ADDRESS`/<YAML_FILE>
    
  • File Yaml

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

    Untuk mengetahui informasi selengkapnya tentang peran ini, lihat Menyiapkan izin IAM

Endpoint Grafana

Untuk Operator Aplikasi (AO):

Buka URL berikut untuk mengakses endpoint project Anda:

https://GDC_URL/PROJECT_NAMESPACE/grafana

Ganti kode berikut:

  • GDC_URL: URL organisasi Anda di GDC.
  • PROJECT_NAMESPACE: Namespace project Anda.

UI project berisi dasbor default seperti dasbor Alerts - Overview dengan informasi tentang pemberitahuan. Dengan membuat kueri pemberitahuan dari UI, Anda dapat mengambil informasi pemberitahuan secara visual dari project dan mendapatkan tampilan resource yang terintegrasi untuk mengetahui dan menyelesaikan masalah dengan cepat.

Untuk Admin Platform (PA):

Buka URL berikut untuk mengakses endpoint project platform-obs Anda:

https://GDC_URL/platform-obs/grafana

Ganti GDC_URL dengan URL organisasi Anda di GDC.

Antarmuka pengguna (UI) instance pemantauan sistem berisi dasbor default seperti dasbor Alerts - Overview dengan informasi tentang pemberitahuan untuk kemampuan observasi data. Dengan membuat kueri pemberitahuan dari UI, Anda dapat mengambil informasi pemberitahuan secara visual dari project dan mendapatkan tampilan resource yang terintegrasi untuk mengetahui dan menyelesaikan masalah dengan cepat.

Dasbor Alerts - Overview menampilkan informasi tentang jumlah pemberitahuan untuk sumber data tertentu dan grafik garis histori pemberitahuan, yang menampilkan jumlah pemberitahuan yang terbuka per jam untuk sumber data tersebut.

Gambar 1. Dasbor Alerts - Overview di UI Grafana.

Melihat dan memfilter notifikasi terbuka

Pilih salah satu metode berikut untuk mengkueri dan memfilter pemberitahuan terbuka dari namespace project Anda:

Konsol

Lihat pemberitahuan terbuka dalam project dari konsol GDC:

  1. Login ke konsol GDC.
  2. Di konsol GDC, pilih project Anda.
  3. Di menu navigasi, pilih Operations > Alerting.
  4. Pilih tab Alerts.
  5. Melihat daftar notifikasi.
  6. Di bagian Alerts opened, klik Filter untuk hanya menampilkan pemberitahuan yang terbuka. Anda juga dapat memfilter pemberitahuan berdasarkan nama atau nilai properti lainnya.
  7. Klik nama pemberitahuan untuk melihat detail pemberitahuan.

Endpoint Cortex

Bagian ini menjelaskan cara mengakses pemberitahuan menggunakan endpoint Cortex Alertmanager Anda.

Mengidentifikasi endpoint Cortex Anda

URL berikut adalah endpoint instance Cortex project Anda:

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

Ganti kode berikut:

  • GDC_URL: URL organisasi Anda di GDC.
  • PROJECT_NAMESPACE: namespace project Anda.

    Misalnya, endpoint Cortex untuk project platform-obs di organisasi org-1 adalah https://org-1/platform-obs/cortex/alertmanager/.

Mengautentikasi permintaan curl

  1. Download dan instal gdcloud CLI.
  2. Tetapkan properti gdcloud core/organization_console_url:

    gdcloud config set core/organization_console_url
    https://GDC_URL
    
  3. Login dengan penyedia identitas yang dikonfigurasi:

    gdcloud auth login
    
  4. Gunakan nama pengguna dan sandi Anda untuk melakukan autentikasi dan login.

    Jika login berhasil, Anda dapat menggunakan header otorisasi dalam permintaan cURL melalui perintah gdcloud auth print-identity-token. Untuk mengetahui informasi selengkapnya, lihat gdcloud auth.

Memanggil endpoint Cortex

Selesaikan langkah-langkah berikut untuk menjangkau endpoint Cortex menggunakan alat curl:

  1. Autentikasi permintaan curl.
  2. Gunakan curl untuk memanggil endpoint Cortex dan perluas URL menggunakan spesifikasi Alertmanager API standar (https://prometheus.io/docs/prometheus/latest/querying/api/#alertmanagers) untuk mengkueri pemberitahuan.

    Berikut adalah contoh permintaan curl:

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

    Anda akan mendapatkan output setelah menjalankan perintah. Respons API dalam format JSON.

Alertmanager

Alertmanager memungkinkan Anda memantau notifikasi pemberitahuan dari aplikasi klien. Anda dapat memeriksa dan menyenyapkan pemberitahuan menggunakan Alertmanager, serta memfilter atau mengelompokkan pemberitahuan:

Mengabaikan pemberitahuan log audit penolakan Loki di cluster root-admin

Gambar 2. Opsi menu untuk mengkueri log audit dari Alertmanager.

Kebijakan pemberitahuan standar

Tabel berikut mencantumkan aturan pemberitahuan yang telah diinstal sebelumnya di Prometheus:

Nama Deskripsi
KubeAPIDown (kritis) KubeAPI telah menghilang dari penemuan target Prometheus selama 15 menit.
KubeClientErrors (peringatan) Rasio error klien server Kubernetes API > 0,01 selama 15 menit.
KubeClientErrors (penting) Rasio error klien server Kubernetes API > 0,1 selama 15 menit.
KubePodCrashLooping (peringatan) Pod telah berada dalam status loop error selama lebih dari 15 menit.
KubePodNotReady (peringatan) Pod telah berada dalam status belum siap selama lebih dari 15 menit.
KubePersistentVolumeFillingUp (kritis) Byte kosong dari PersistentVolume yang diklaim < 0,03.
KubePersistentVolumeFillingUp (peringatan) Byte kosong dari PersistentVolume yang diklaim < 0,15.
KubePersistentVolumeErrors (kritis) Volume persisten berada dalam fase Failed atau Pending selama lima menit.
KubeNodeNotReady (peringatan) Node belum siap selama lebih dari 15 menit.
KubeNodeCPUUsageHigh (kritis) Penggunaan CPU node > 80%.
KubeNodeMemoryUsageHigh (kritis) Penggunaan memori node > 80%.
NodeFilesystemSpaceFillingUp (peringatan) Penggunaan sistem file node > 60%.
NodeFilesystemSpaceFillingUp (critical) Penggunaan sistem file node > 85%.
CertManagerCertExpirySoon (peringatan) Masa berlaku sertifikat akan berakhir dalam 21 hari.
CertManagerCertNotReady (penting) Sertifikat belum siap menyalurkan traffic setelah 10 menit.
CertManagerHittingRateLimits (kritis) Batas kapasitas telah tercapai saat membuat dan memperpanjang sertifikat selama lima menit.
DeploymentNotReady (kritis). Deployment di cluster admin organisasi telah berada dalam status belum siap selama lebih dari 15 menit.

Contoh alertmanagerConfigurationConfigmaps

Sintaksis konfigurasi di ConfigMap yang dicantumkan oleh alertmanagerConfigurationConfigmaps harus mengikuti https://prometheus.io/docs/alerting/latest/configuration/

apiVersion: observability.gdc.goog/v1alpha1
kind: ObservabilityPipeline
metadata:
  # Choose namespace that matches the project's namespace
  namespace: kube-system
  name: observability-config
# Configure Alertmanager
 alerting:
  # Storage size for alerting data within organization
  # Permission: PA
  localStorageSize: 1Gi

  # Permission: PA & AO
  # alertmanager config must be under the key "alertmanager.yml" in the configMap
  alertmanagerConfig: <configmap-for-alertmanager-config>

  # Permission: PA
  volumes:
    - <volume referenced in volumeMounts>

  # Permission: PA
  volumeMounts:
    - <volumeMount referenced in alertmanagerConfig>

Contoh konfigurasi aturan

# Configures either an alert or a target record for precomputation
apiVersion: monitoring.gdc.goog/v1alpha1
kind: MonitoringRule
metadata:
  # Choose namespace that contains the metrics that rules are based on
  # Note: alert/record will be produced in the same namespace
  namespace: g-fleetns-a
  name: alerting-config
spec:
  # Rule evaluation interval
  interval: <duration>

  # Configure limit for number of alerts (0: no limit)
  # Optional, Default: 0 (no limit)
  limit: <int>

  # Configure record rules
  recordRules:
    # Define which timeseries to write to (must be a valid metric name)
  - record: <string>

    # Define PromQL expression to evaluate for this rule
    expr: <string>

    # Define labels to add or overwrite
    # Optional, Map of {key, value} pairs
    labels:
      <labelname>: <labelvalue>

  # Configure alert rules
  alertRules:
    # Define alert name 
  - alert: <string>

    # Define PromQL expression to evaluate for this rule
    # https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/
    expr: <string>

    # Define when an active alert moves from pending to firing
    # Optional, Default: 0s
    for: <duration>

    # Define labels to add or overwrite
    # Required, Map of {key, value} pairs
    # Required labels: 
    #     severity: [error, critical, warning, info]
    #     code: 
    #     resource: component/service/hardware related to alert
    #     additional labels are optional
    labels:
      severity: <enum: [error, critical, warning, info]>
      code: 
      resource: <Short name of the related operable component>
      <labelname>: <tmpl_string>

    # Define annotations to add
    # Optional, Map of {key, value} pairs
    # Recommended annotations:
    #     message: value of Message field in UI
    #     expression: value of Rule field in UI
    #     runbookurl: URL for link in Actions to take field in UI
    annotations:
      <labelname>: <tmpl_string>
# Configures either an alert or a target record for precomputation
apiVersion: logging.gdc.goog/v1alpha1
kind: LoggingRule
metadata:
  # Choose namespace that contains the logs that rules are based on
  # Note: alert/record will be produced in the same namespace
  namespace: g-fleetns-a
  name: alerting-config
spec:
  # Choose which log source to base alerts on (Operational/Audit/Security Logs)
  # Optional, Default: Operational
  source: <string>

  # Rule evaluation interval
  interval: <duration>

  # Configure limit for number of alerts (0: no limit)
  # Optional, Default: 0 (no limit)
  limit: <int>

  # Configure record rules
  recordRules:
    # Define which timeseries to write to (must be a valid metric name)
  - record: <string>

    # Define LogQL expression to evaluate for this rule
    # https://grafana.com/docs/loki/latest/rules/
    expr: <string>

    # Define labels to add or overwrite
    # Optional, Map of {key, value} pairs
    labels:
      <labelname>: <labelvalue>

  # Configure alert rules
  alertRules:
    # Define alert name
  - alert: <string>

    # Define LogQL expression to evaluate for this rule
    expr: <string>

    # Define when an active alert moves from pending to firing
    # Optional, Default: 0s
    for: <duration>

    # Define labels to add or overwrite
    # Required, Map of {key, value} pairs
    # Required labels: 
    #     severity: [error, critical, warning, info]
    #     code: 
    #     resource: component/service/hardware related to alert
    #     additional labels are optional
    labels:
      severity: <enum: [error, critical, warning, info]>
      code:
      resource: <Short name of the related operable component>
      <labelname>: <tmpl_string>

    # Define annotations to add
    # Optional, Map of {key, value} pairs
    # Recommended annotations:
    #     message: value of Message field in UI
    #     expression: value of Rule field in UI
    #     runbookurl: URL for link in Actions to take field in UI
    annotations:
      <labelname>: <tmpl_string>

Membuat kueri pemberitahuan dari HTTP API

Platform Observabilitas mengekspos endpoint HTTP API untuk membuat kueri dan membaca metrik, pemberitahuan, dan data deret waktu lainnya dari project Anda untuk pemantauan sistem.

Buat kueri pemberitahuan langsung dari Observability HTTP API untuk menyiapkan tugas otomatis, menyesuaikan respons, dan membangun integrasi sesuai dengan kasus penggunaan Anda. Misalnya, masukkan output ke perintah lain, ekspor detail ke format file teks, atau konfigurasi cron job Linux. Anda dapat memanggil Observability HTTP API dari antarmuka command line (CLI) atau browser web dan mendapatkan hasilnya dalam format JSON.

Bagian ini menjelaskan cara memanggil endpoint HTTP API Observabilitas dari CLI menggunakan spesifikasi API untuk mengkueri pemberitahuan.

Buat kueri pemberitahuan langsung dari Observability HTTP API untuk menyiapkan tugas otomatis, menyesuaikan respons, dan membangun integrasi sesuai dengan kasus penggunaan Anda. Misalnya, masukkan output ke perintah lain, ekspor detail ke format file teks, atau konfigurasi cron job Linux. Anda dapat memanggil Observability HTTP API dari antarmuka command line (CLI) atau browser web dan mendapatkan hasilnya dalam format JSON.

Bagian ini menjelaskan cara memanggil endpoint API Observability HTTP dari CLI menggunakan spesifikasi Alertmanager API untuk mengkueri metrik.

Sebelum memulai

Untuk mendapatkan izin yang diperlukan untuk mengakses endpoint API HTTP Observabilitas, minta Admin IAM Project Anda untuk memberi Anda peran Project Cortex Alertmanager Viewer (project-cortex-alertmanager-viewer) di namespace project Anda.

Project IAM Admin dapat memberi Anda akses dengan membuat binding peran:

a. Root-Admin Operator Infrastruktur (IO) - Project Cortex Alertmanager Viewer:

kubectl --kubeconfig $HOME/root-admin-kubeconfig create rolebinding 
io-cortex-alertmanager-viewer-binding -n infra-obs 
--user=fop-infrastructure-operator@example.com 
--role=project-cortex-alertmanager-viewer

b. Platform-Admin (PA) Root-Admin - Project Cortex Alertmanager Viewer:

kubectl --kubeconfig $HOME/root-admin-kubeconfig create rolebinding
pa-cortex-alertmanager-viewer-binding -n platform-obs 
--user=fop-platform-admin@example.com 
--role=project-cortex-alertmanager-viewer

c. Application Operator (AO) Root-Admin - Project Cortex Alertmanager Viewer: Project: $AO_PROJECT AO User Name: $AO_USER

kubectl --kubeconfig $HOME/root-admin-kubeconfig create rolebinding 
project-cortex-alertmanager-viewer-binding -n $AO_PROJECT 
--user=$AO_USER 
--role=project-cortex-alertmanager-viewer

Setelah binding peran dibuat, Anda dapat mengakses Alertmanager yang sesuai dengan nama pengguna login Anda.

Memverifikasi binding peran

kubectl --kubeconfig $HOME/org-1-admin-kubeconfig get rolebinding -n platform-obs

Untuk mengetahui informasi tentang cara menetapkan binding peran dari konsol GDC, lihat Memberikan akses ke resource.

Endpoint Cortex

URL berikut adalah endpoint Cortex untuk mengakses pemberitahuan:

https://GDC_URL/PROJECT_NAME/cortex/alertmanager/

Ganti kode berikut:

  • GDC_URL: URL organisasi Anda di GDC.
  • PROJECT_NAME: Nama project Anda.

Memanggil endpoint API

Ikuti langkah-langkah berikut untuk menjangkau endpoint API Cortex dari CLI dan membuat kueri pemberitahuan:

  1. Pastikan Anda memenuhi prasyarat.
  2. Buka CLI.
  3. Gunakan alat curl untuk memanggil URL endpoint Cortex dan perluas URL menggunakan https://prometheus.io/docs/prometheus/latest/querying/api/#alertmanagers standar untuk membuat kueri pemberitahuan. Contoh:

    curl https://console.org-1.zone1.google.gdch.test/alice/cortex/alertmanager/api/v1/alertmanagers
    

Anda akan mendapatkan output di CLI setelah perintah. Format respons API adalah JSON.