Memantau status dan aktivitas GitOps (Flux v2)
Untuk memantau status dan aktivitas yang terkait dengan GitOps dengan Flux v2 di kluster Kubernetes berkemampuan Azure Arc atau kluster Azure Kubernetes Service (AKS), Anda memiliki beberapa opsi:
- Gunakan portal Microsoft Azure untuk memantau konfigurasi Fluks dan sumber daya pada kluster individual.
- Gunakan dasbor Grafana untuk memantau status penyebaran dan kepatuhan.
- Gunakan dasbor Sarana Kontrol Flux dan Flux Cluster Stats untuk memantau konsumsi dan rekonsiliasi sumber daya.
- Aktifkan pengikisan Prometheus dari kluster dan buat dasbor Anda sendiri menggunakan data di ruang kerja Azure Monitor.
- Buat peringatan di Azure Monitor menggunakan data yang tersedia melalui pengikisan Prometheus.
Topik ini menjelaskan beberapa cara yang dapat Anda gunakan untuk memantau aktivitas dan status Flux Anda.
Memantau konfigurasi Fluks di portal Azure
Setelah membuat konfigurasi Flux di kluster, Anda dapat melihat informasi status di portal Azure dengan menavigasi ke kluster dan memilih GitOps.
Melihat detail tentang kepatuhan kluster dan objek
Status Kepatuhan menunjukkan apakah status kluster saat ini cocok dengan status yang diinginkan. Nilai yang mungkin:
- Sesuai: Status kluster cocok dengan status yang diinginkan.
- Tertunda: Status yang diinginkan yang diperbarui terdeteksi, tetapi status tersebut belum direkonsiliasi pada kluster.
- Tidak Sesuai: Status saat ini tidak cocok dengan status yang diinginkan.
Untuk membantu men-debug masalah rekonsiliasi untuk kluster, pilih Objek konfigurasi. Di sini, Anda dapat melihat log dari setiap objek konfigurasi yang dibuat Flux untuk setiap konfigurasi Flux. Pilih nama objek untuk melihat lognya.
Untuk melihat objek Kubernetes yang dibuat sebagai akibat dari konfigurasi Fluks yang diterapkan, pilih Beban Kerja di bagian sumber daya Kubernetes dari menu layanan kluster. Di sini, Anda dapat melihat semua detail sumber daya apa pun yang dibuat pada kluster.
Secara default, Anda dapat memfilter menurut namespace layanan dan nama layanan. Anda juga dapat menambahkan filter label apa pun yang mungkin Anda gunakan di aplikasi Anda untuk membantu mempersempit pencarian.
Lihat status dan detail konfigurasi Fluks
Untuk setiap konfigurasi Fluks, kolom Status menunjukkan apakah objek konfigurasi Fluks berhasil dibuat pada kluster.
Pilih konfigurasi Fluks apa pun untuk melihat halaman Gambaran Umumnya, termasuk informasi berikut:
- ID penerapan sumber untuk sinkronisasi terakhir
- Tanda waktu pembaruan sumber terbaru
- Tanda waktu pembaruan status (menunjukkan kapan statistik terbaru diperoleh)
- URL dan cabang repositori
- Tautan untuk melihat kustomisasi yang berbeda
Menggunakan dasbor untuk memantau status dan aktivitas GitOps
Kami menyediakan dasbor untuk membantu Anda memantau status, kepatuhan, konsumsi sumber daya, dan aktivitas rekonsiliasi untuk GitOps dengan Flux v2. Dasbor JSON ini dapat diimpor ke Grafana untuk membantu Anda melihat dan menganalisis data Anda secara real time. Anda juga dapat menyiapkan pemberitahuan untuk informasi ini.
Untuk mengimpor dan menggunakan dasbor ini, Anda memerlukan:
- Satu atau beberapa kluster Kubernetes yang didukung Arc atau kluster AKS yang ada.
- Ekstensi microsoft.flux diinstal pada kluster.
- Setidaknya satu konfigurasi Fluks yang dibuat pada kluster.
Memantau status penyebaran dan kepatuhan
Ikuti langkah-langkah ini untuk mengimpor dasbor yang memungkinkan Anda memantau penyebaran dan status ekstensi Flux di seluruh kluster, dan status kepatuhan konfigurasi Flux pada kluster tersebut.
Catatan
Langkah-langkah ini menjelaskan proses untuk mengimpor dasbor ke Azure Managed Grafana. Anda juga dapat mengimpor dasbor ini ke instans Grafana apa pun. Dengan opsi ini, perwakilan layanan harus digunakan; identitas terkelola tidak didukung untuk koneksi data di luar Azure Managed Grafana.
Buat instans Azure Managed Grafana dengan menggunakan portal Azure atau Azure CLI. Pastikan Anda dapat mengakses Grafana dengan memilih titik akhirnya di halaman Gambaran Umum. Anda memerlukan setidaknya izin tingkat Editor Grafana untuk melihat dan mengedit dasbor. Anda dapat memeriksa akses Anda dengan masuk ke Kontrol akses (IAM) pada instans Grafana.
Jika Anda menggunakan identitas terkelola untuk instans Azure Managed Grafana, ikuti langkah-langkah ini untuk menetapkan peran Pembaca Pemantauan pada langganan tempat Anda membuat instans Azure Managed Grafana:
- Di portal Azure, navigasikan ke langganan yang ingin Anda tambahkan.
- Pilih Kontrol Akses (IAM).
- Pilih Tambahkan penetapan peran.
- Pilih peran Pembaca Pemantauan, lalu pilih Berikutnya.
- Pada tab Anggota , pilih Identitas terkelola, lalu pilih Pilih anggota.
- Dari daftar Identitas terkelola, pilih langganan, lalu pilih Azure Managed Grafana dan nama instans Azure Managed Grafana Anda.
- Pilih Tinjau + Tetapkan.
Jika Anda menggunakan perwakilan layanan, berikan peran Pembaca Pemantauan kepada perwakilan layanan yang akan Anda gunakan untuk koneksi sumber data Anda. Ikuti langkah-langkah yang sama ini, tetapi pilih Pengguna, grup, atau perwakilan layanan di tab Anggota , lalu pilih perwakilan layanan Anda. (Jika Anda tidak menggunakan Azure Managed Grafana, Anda harus menggunakan perwakilan layanan untuk akses koneksi data.)
Buat koneksi Sumber Data Azure Monitor di instans Azure Managed Grafana Anda. Koneksi ini memungkinkan dasbor mengakses data Azure Resource Graph.
Unduh Dasbor GitOps Flux - Penyebaran Aplikasi.
Ikuti langkah-langkah untuk mengimpor dasbor JSON ke Grafana.
Setelah Anda mengimpor dasbor, dasbor menampilkan informasi dari kluster yang Anda pantau, dengan beberapa panel yang memberikan detail. Untuk detail selengkapnya tentang item, pilih tautan untuk mengunjungi portal Azure, tempat Anda dapat menemukan informasi tentang konfigurasi, kesalahan, dan log.
Tabel Status Penyebaran Ekstensi Fluks mencantumkan semua kluster tempat ekstensi Flux disebarkan, bersama dengan status penyebaran saat ini.
Tabel Status Kepatuhan Konfigurasi Fluks mencantumkan semua konfigurasi Fluks yang dibuat pada kluster, bersama dengan status kepatuhannya. Untuk melihat status dan log kesalahan untuk objek konfigurasi seperti rilis dan kustomisasi Helm, pilih tautan Tidak Patuh dari kolom ComplianceState .
Bagan Jumlah Penyebaran Ekstensi Fluks menurut Status menunjukkan jumlah kluster, berdasarkan status provisinya.
Bagan Jumlah Konfigurasi Fluks menurut Status Kepatuhan menunjukkan jumlah konfigurasi Fluks, berdasarkan status kepatuhannya sehubungan dengan repositori sumber.
Memfilter data dasbor untuk melacak penyebaran aplikasi
Anda dapat memfilter data di Dasbor GitOps Flux - Penyebaran Aplikasi untuk mengubah informasi yang ditampilkan. Misalnya, Anda hanya dapat menampilkan data untuk langganan atau grup sumber daya tertentu, atau membatasi data ke kluster tertentu. Untuk melakukannya, pilih opsi filter baik dari dropdown tingkat atas atau dari header kolom apa pun dalam tabel.
Misalnya, dalam tabel Status Kepatuhan Konfigurasi Fluks, Anda dapat memilih penerapan tertentu dari kolom SourceLastSyncCommit . Dengan demikian, Anda dapat melacak status penyebaran konfigurasi ke semua kluster yang terpengaruh oleh penerapan tersebut.
Membuat pemberitahuan untuk kegagalan ekstensi dan konfigurasi
Setelah mengimpor dasbor seperti yang dijelaskan di bagian sebelumnya, Anda dapat menyiapkan pemberitahuan. Pemberitahuan ini memberi tahu Anda ketika ekstensi Flux atau konfigurasi Fluks mengalami kegagalan.
Ikuti langkah-langkah ini untuk membuat pemberitahuan. Contoh kueri disediakan untuk mendeteksi provisi ekstensi atau kegagalan peningkatan ekstensi, atau untuk mendeteksi kegagalan status kepatuhan.
Di menu navigasi kiri dasbor, pilih Pemberitahuan.
Pilih Aturan Pemberitahuan.
Pilih + Buat aturan pemberitahuan. Halaman aturan pemberitahuan baru terbuka, dengan opsi Pemberitahuan terkelola Grafana dipilih secara default.
Di Nama aturan, tambahkan nama deskriptif. Nama ini ditampilkan dalam daftar aturan pemberitahuan, dan digunakan sebagai
alertname
label untuk setiap instans pemberitahuan yang dibuat dari aturan ini.Di bawah Atur kueri dan kondisi pemberitahuan:
Pilih sumber data. Sumber data yang sama yang digunakan untuk dasbor dapat digunakan di sini.
Untuk Layanan, pilih Azure Resource Graph.
Pilih langganan dari daftar dropdown.
Masukkan kueri yang ingin Anda gunakan. Misalnya, untuk provisi ekstensi atau kegagalan peningkatan, Anda dapat memasukkan kueri ini:
kubernetesconfigurationresources | where type == "microsoft.kubernetesconfiguration/extensions" | extend provisioningState = tostring(properties.ProvisioningState) | where provisioningState == "Failed" | summarize count() by provisioningState
Atau untuk kegagalan status kepatuhan, Anda bisa memasukkan kueri ini:
kubernetesconfigurationresources | where type == "microsoft.kubernetesconfiguration/fluxconfigurations" | extend complianceState=tostring(properties.complianceState) | where complianceState == "Non-Compliant" | summarize count() by complianceState
Untuk kotak Ambang, pilih A untuk jenis input dan atur ambang batas ke 0 untuk menerima pemberitahuan meskipun hanya satu ekstensi yang gagal pada kluster. Tandai ini sebagai kondisi Pemberitahuan.
Tentukan interval evaluasi pemberitahuan:
- Untuk Kondisi, pilih kueri atau ekspresi untuk memicu aturan pemberitahuan.
- Untuk Evaluasi setiap, masukkan frekuensi evaluasi sebagai kelipatan 10 detik.
- Untuk Evaluasi, tentukan berapa lama kondisi harus benar sebelum pemberitahuan dibuat.
- Di Konfigurasikan tidak ada penanganan data dan kesalahan, tunjukkan apa yang harus terjadi ketika aturan pemberitahuan tidak mengembalikan data atau mengembalikan kesalahan.
- Untuk memeriksa hasil menjalankan kueri, pilih Pratinjau.
Tambahkan lokasi penyimpanan, grup aturan, dan metadata lain yang ingin Anda kaitkan dengan aturan.
- Untuk Folder, pilih folder tempat aturan harus disimpan.
- Untuk Grup, tentukan grup yang telah ditentukan sebelumnya.
- Jika diinginkan, tambahkan deskripsi dan ringkasan untuk menyesuaikan pesan pemberitahuan.
- Tambahkan URL Runbook, panel, dasbor, dan ID pemberitahuan sesuai kebutuhan.
Jika diinginkan, tambahkan label kustom apa pun. Kemudian pilih Simpan.
Anda juga dapat mengonfigurasi titik kontak dan kebijakan pemberitahuan untuk pemberitahuan Anda.
Memantau konsumsi dan rekonsiliasi sumber daya
Ikuti langkah-langkah ini untuk mengimpor dasbor yang memungkinkan Anda memantau konsumsi sumber daya Flux, rekonsiliasi, permintaan API, dan status pendamaian.
Ikuti langkah-langkah untuk membuat Ruang Kerja Azure Monitor.
Buat instans Azure Managed Grafana dengan menggunakan portal Azure atau Azure CLI.
Aktifkan koleksi metrik Prometheus pada kluster AKS dan/atau kluster Kubernetes berkemampuan Arc yang ingin Anda pantau.
Konfigurasikan Agen Azure Monitor untuk mengikis metrik Azure Managed Flux dengan membuat peta konfigurasi:
kind: ConfigMap apiVersion: v1 data: schema-version: #string.used by agent to parse config. supported versions are {v1}. Configs with other schema versions will be rejected by the agent. v1 config-version: #string.used by customer to keep track of this config file's version in their source control/repository (max allowed 10 chars, other chars will be truncated) ver1 default-scrape-settings-enabled: |- kubelet = true coredns = false cadvisor = true kubeproxy = false apiserver = false kubestate = true nodeexporter = true windowsexporter = false windowskubeproxy = false kappiebasic = true prometheuscollectorhealth = false # Regex for which namespaces to scrape through pod annotation based scraping. # This is none by default. Use '.*' to scrape all namespaces of annotated pods. pod-annotation-based-scraping: |- podannotationnamespaceregex = "flux-system" default-targets-scrape-interval-settings: |- kubelet = "30s" coredns = "30s" cadvisor = "30s" kubeproxy = "30s" apiserver = "30s" kubestate = "30s" nodeexporter = "30s" windowsexporter = "30s" windowskubeproxy = "30s" kappiebasic = "30s" prometheuscollectorhealth = "30s" podannotations = "30s" metadata: name: ama-metrics-settings-configmap namespace: kube-system
Tautkan ruang kerja Prometheus Terkelola ke instans Grafana Terkelola. Proses ini membutuhkan waktu beberapa menit untuk diselesaikan.
Ikuti langkah-langkah untuk mengimpor dasbor JSON ini ke Grafana.
Setelah Anda mengimpor dasbor, dasbor menampilkan informasi dari kluster yang Anda pantau. Untuk menampilkan informasi hanya untuk kluster atau namespace tertentu, gunakan filter di dekat bagian atas setiap dasbor.
Dasbor Flux Control Plane menampilkan detail tentang konsumsi sumber daya status, rekonsiliasi di tingkat kluster, dan permintaan API Kubernetes.
Dasbor Statistik Kluster Fluks menunjukkan detail tentang jumlah rekonsilier, bersama dengan status dan durasi eksekusi setiap reconciler.
Membuat pemberitahuan untuk konsumsi sumber daya dan masalah rekonsiliasi
Setelah mengimpor dasbor seperti yang dijelaskan di bagian sebelumnya, Anda dapat menyiapkan pemberitahuan. Pemberitahuan ini memberi tahu Anda tentang konsumsi sumber daya dan masalah rekonsiliasi yang mungkin memerlukan perhatian.
Untuk mengaktifkan pemberitahuan ini, Anda menyebarkan templat Bicep yang mirip dengan yang diperlihatkan di sini. Aturan pemberitahuan dalam templat ini adalah sampel yang dapat dimodifikasi sesuai kebutuhan.
Setelah Anda mengunduh templat Bicep dan membuat perubahan, ikuti langkah-langkah ini untuk menyebarkan templat.
param azureMonitorWorkspaceName string
param alertReceiverEmailAddress string
param kustomizationLookbackPeriodInMinutes int = 5
param helmReleaseLookbackPeriodInMinutes int = 5
param gitRepositoryLookbackPeriodInMinutes int = 5
param bucketLookbackPeriodInMinutes int = 5
param helmRepoLookbackPeriodInMinutes int = 5
param timeToResolveAlerts string = 'PT10M'
param location string = resourceGroup().location
resource azureMonitorWorkspace 'Microsoft.Monitor/accounts@2023-04-03' = {
name: azureMonitorWorkspaceName
location: location
}
resource fluxRuleActionGroup 'Microsoft.Insights/actionGroups@2023-01-01' = {
name: 'fluxRuleActionGroup'
location: 'global'
properties: {
enabled: true
groupShortName: 'fluxGroup'
emailReceivers: [
{
name: 'emailReceiver'
emailAddress: alertReceiverEmailAddress
}
]
}
}
resource fluxRuleGroup 'Microsoft.AlertsManagement/prometheusRuleGroups@2023-03-01' = {
name: 'fluxRuleGroup'
location: location
properties: {
description: 'Flux Prometheus Rule Group'
scopes: [
azureMonitorWorkspace.id
]
enabled: true
interval: 'PT1M'
rules: [
{
alert: 'KustomizationNotReady'
expression: 'sum by (cluster, namespace, name) (gotk_reconcile_condition{type="Ready", status="False", kind="Kustomization"}) > 0'
for: 'PT${kustomizationLookbackPeriodInMinutes}M'
labels: {
description: 'Kustomization reconciliation failing for last ${kustomizationLookbackPeriodInMinutes} minutes.'
}
annotations: {
description: 'Kustomization reconciliation failing for last ${kustomizationLookbackPeriodInMinutes} minutes.'
}
enabled: true
severity: 3
resolveConfiguration: {
autoResolved: true
timeToResolve: timeToResolveAlerts
}
actions: [
{
actionGroupId: fluxRuleActionGroup.id
}
]
}
{
alert: 'HelmReleaseNotReady'
expression: 'sum by (cluster, namespace, name) (gotk_reconcile_condition{type="Ready", status="False", kind="HelmRelease"}) > 0'
for: 'PT${helmReleaseLookbackPeriodInMinutes}M'
labels: {
description: 'HelmRelease reconciliation failing for last ${helmReleaseLookbackPeriodInMinutes} minutes.'
}
annotations: {
description: 'HelmRelease reconciliation failing for last ${helmReleaseLookbackPeriodInMinutes} minutes.'
}
enabled: true
severity: 3
resolveConfiguration: {
autoResolved: true
timeToResolve: timeToResolveAlerts
}
actions: [
{
actionGroupId: fluxRuleActionGroup.id
}
]
}
{
alert: 'GitRepositoryNotReady'
expression: 'sum by (cluster, namespace, name) (gotk_reconcile_condition{type="Ready", status="False", kind="GitRepository"}) > 0'
for: 'PT${gitRepositoryLookbackPeriodInMinutes}M'
labels: {
description: 'GitRepository reconciliation failing for last ${gitRepositoryLookbackPeriodInMinutes} minutes.'
}
annotations: {
description: 'GitRepository reconciliation failing for last ${gitRepositoryLookbackPeriodInMinutes} minutes.'
}
enabled: true
severity: 3
resolveConfiguration: {
autoResolved: true
timeToResolve: timeToResolveAlerts
}
actions: [
{
actionGroupId: fluxRuleActionGroup.id
}
]
}
{
alert: 'BucketNotReady'
expression: 'sum by (cluster, namespace, name) (gotk_reconcile_condition{type="Ready", status="False", kind="Bucket"}) > 0'
for: 'PT${bucketLookbackPeriodInMinutes}M'
labels: {
description: 'Bucket reconciliation failing for last ${bucketLookbackPeriodInMinutes} minutes.'
}
annotations: {
description: 'Bucket reconciliation failing for last ${bucketLookbackPeriodInMinutes} minutes.'
}
enabled: true
severity: 3
resolveConfiguration: {
autoResolved: true
timeToResolve: timeToResolveAlerts
}
actions: [
{
actionGroupId: fluxRuleActionGroup.id
}
]
}
{
alert: 'HelmRepositoryNotReady'
expression: 'sum by (cluster, namespace, name) (gotk_reconcile_condition{type="Ready", status="False", kind="HelmRepository"}) > 0'
for: 'PT${helmRepoLookbackPeriodInMinutes}M'
labels: {
description: 'HelmRepository reconciliation failing for last ${helmRepoLookbackPeriodInMinutes} minutes.'
}
annotations: {
description: 'HelmRepository reconciliation failing for last ${helmRepoLookbackPeriodInMinutes} minutes.'
}
enabled: true
severity: 3
resolveConfiguration: {
autoResolved: true
timeToResolve: timeToResolveAlerts
}
actions: [
{
actionGroupId: fluxRuleActionGroup.id
}
]
}
]
}
}
Langkah berikutnya
- Tinjau tutorial kami tentang menggunakan GitOps dengan Flux v2 untuk mengelola konfigurasi dan penyebaran aplikasi.
- Pelajari tentang Azure Monitor Container Insights.