Membuat kueri dan melihat pemberitahuan terbuka

Setelah membuat aturan pemberitahuan di project appliance air-gapped Google Distributed Cloud (GDC), Anda dapat membuat kueri dan melihat pemberitahuan di dasbor dari antarmuka pengguna (UI) instance pemantauan sistem project atau membuat kueri pemberitahuan dari GDC Observability HTTP API.

Membuat kueri dan melihat pemberitahuan di dasbor

Anda dapat melihat pemberitahuan di dasbor dari instance pemantauan sistem project platform-obs.

Instance pemantauan sistem mencakup metrik, log, dan pemberitahuan tingkat project untuk melakukan proses pemantauan seperti pemantauan jaringan dan pemantauan server.

Sebelum memulai

Sebelum mengkueri dan melihat pemberitahuan di dasbor, Anda harus mendapatkan akses ke instance pemantauan sistem. Untuk mengetahui informasi selengkapnya, lihat Mendapatkan akses ke dasbor.

Untuk login dan memvisualisasikan pemberitahuan, minta Admin IAM Project Anda untuk memberi Anda peran Project Grafana Viewer (project-grafana-viewer). Proses kontrol akses berbasis peran ini memungkinkan Anda mengakses visualisasi data dengan aman.

Endpoint instance pemantauan sistem

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 terintegrasi dari resource 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 pengamatan data. Dengan membuat kueri pemberitahuan dari UI, Anda dapat mengambil informasi pemberitahuan secara visual dari project dan mendapatkan tampilan terintegrasi dari resource untuk mengetahui dan menyelesaikan masalah dengan cepat.

Dasbor Alerts - Overview menampilkan informasi tentang jumlah notifikasi untuk sumber data tertentu dan grafik garis histori notifikasi, yang menunjukkan jumlah notifikasi yang belum diselesaikan per jam untuk sumber data.

Gambar 1. Dasbor Alerts - Overview di UI Grafana.

Alertmanager

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

Mengabaikan pemberitahuan log audit penolakan Loki di cluster admin root

Gambar 2. Opsi menu untuk membuat kueri log audit dari Alertmanager.

Kebijakan pemberitahuan yang telah ditentukan sebelumnya

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 (kritis) Rasio error klien server Kubernetes API > 0,1 selama 15 menit.
KubePodCrashLooping (peringatan) Pod telah berada dalam status error berulang selama lebih dari 15 menit.
KubePodNotReady (peringatan) Pod telah berada dalam status tidak 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 Gagal atau Tertunda 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 (kritis) Penggunaan sistem file node > 85%.
CertManagerCertExpirySoon (peringatan) Masa berlaku sertifikat akan berakhir dalam 21 hari.
CertManagerCertNotReady (kritis) Sertifikat tidak siap melayani traffic setelah 10 menit.
CertManagerHittingRateLimits (kritis) Batas kecepatan telah tercapai saat membuat dan memperpanjang sertifikat selama lima menit.
DeploymentNotReady (kritis). Deployment di cluster admin org telah berada dalam status tidak siap selama lebih dari 15 menit.

Contoh alertmanagerConfigurationConfigmaps

Sintaksis konfigurasi di ConfigMaps yang tercantum dalam 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 Observability mengekspos endpoint HTTP API untuk membuat kueri dan membaca metrik, pemberitahuan, dan data deret waktu lainnya dari project Anda untuk pemantauan sistem.

Kueri pemberitahuan langsung dari Observability HTTP API untuk menyiapkan tugas otomatis, menyesuaikan respons, dan membuat integrasi sesuai dengan kasus penggunaan Anda. Misalnya, masukkan output ke perintah lain, ekspor detail ke format file teks, atau konfigurasi tugas cron 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 Observability HTTP API dari CLI menggunakan spesifikasi APIuntuk membuat kueri pemberitahuan.

Kueri pemberitahuan langsung dari Observability HTTP API untuk menyiapkan tugas otomatis, menyesuaikan respons, dan membuat integrasi sesuai dengan kasus penggunaan Anda. Misalnya, masukkan output ke perintah lain, ekspor detail ke format file teks, atau konfigurasi tugas cron 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 Observability HTTP API dari CLI menggunakan spesifikasi Alertmanager API untuk membuat kueri metrik.

Sebelum memulai

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

Admin IAM Project 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. Admin Platform (PA) Admin Root - 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. Root-Admin Operator Aplikasi (AO) - Project Cortex Alertmanager Viewer: Project: $AO_PROJECT Nama Pengguna AO: $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 menyetel 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.

Panggil endpoint API

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

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

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

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