Topik ini menjelaskan cara penyedia layanan dapat mengonfigurasi pemantauan dan peringatan bisnis untuk layanan terkelola penuh dalam kluster Container Service for Kubernetes (ACK).
Dalam skenario penyebaran berbasis ACK, metode integrasi layanan terkelola penuh single-tenant dengan Managed Service for Prometheus sama dengan metode integrasi layanan terkelola penuh multi-tenant dengan Managed Service for Prometheus. Jika layanan terkelola penuh single-tenant diterapkan dalam kluster ACK, kluster tersebut eksklusif untuk pelanggan. Jika layanan terkelola penuh multi-tenant diterapkan pada kluster ACK, beberapa pelanggan berbagi kluster tersebut. Setelah Anda mengonfigurasi fitur pengalihan data deret waktu tenant untuk Managed Service for Prometheus di kluster ACK, pengguna dan penyedia layanan dapat melihat data deret waktu dari instance layanan. (ID Grup Teknis DingTalk: 31045016300).
Diagram Alir

Compute Nest menggunakan fitur pemantauan multi-tenant dari Managed Service for Prometheus yang disediakan oleh Alibaba Cloud Application Real-Time Monitoring Service (ARMS).
Managed Service for Prometheus menyediakan kemampuan multi-tenant bawaan. Dalam kluster tempat data deret waktu perlu dikumpulkan, Agen Prometheus membedakan data deret waktu tenant berdasarkan tag tenant tertentu yang ditambahkan ke beban kerja di tingkat pod atau namespace. Data deret waktu dari tenant yang berbeda didistribusikan ke instance layanan tenant yang sesuai.
Sistem penyimpanan secara alami mendukung isolasi multi-tenant. Penyedia layanan hanya perlu menambahkan tag tenant ke beban kerja tenant yang berbeda.
Layanan terkelola penuh multi-tenant Compute Nest menggunakan namespace untuk mengisolasi sumber daya instance tenant. Setelah tag tenant ditambahkan ke namespace, program backend secara otomatis meneruskan data deret waktu tenant ke instance layanan tenant yang sesuai.
Fitur penulisan jarak jauh dapat diaktifkan untuk penyedia layanan guna memberikan data pemantauan tenant ke akun penyedia layanan. Dengan cara ini, penyedia layanan dapat melihat data pemantauan semua tenant, sedangkan tenant hanya dapat melihat data pemantauan mereka sendiri.
Prosedur
Langkah 1: Konfigurasikan komponen Managed Service for Prometheus di kluster ACK
Managed Service for Prometheus tidak mendukung pengalihan data deret waktu. Anda dapat mengonfigurasi Managed Service for Prometheus untuk meneruskan data deret waktu terkait aplikasi pengguna ke pengguna tertentu.
Layanan terkelola penuh single-tenant
Dalam layanan terkelola penuh single-tenant, Compute Nest mengenkapsulasi konfigurasi menjadi modul Template ROS (Resource Orchestration Service). Anda dapat menggunakan modul dalam template ROS.
Integrasikan konten ke dalam template ROS saat Anda membuat layanan.
Contoh template:
ClusterArmsConfig: Type: 'MODULE::ACS::ComputeNest::AckArmsConfig' Version: v1 Properties: ClusterId: Fn::If: - Condition: CreateACKCondition - Ref: ManagedKubernetesCluster - Ref: ClusterId WhetherSupplierNeedMetric: true AccessKeyID: LTAI**************** AccessKeySecret: yourAccessKeySecret SupplierAliuid: 15634578xxxxxxParameter:
WhetherSupplierNeedMetric: menentukan apakah penyedia layanan perlu menerima data tenant. Nilaitruemenunjukkan bahwa penyedia layanan perlu menerima data deret waktu tenant. JikaWhetherSupplierNeedMetricdiatur ketrue, tentukanAccessKeyID,AccessKeySecret, danSupplierAliuid.SupplierAliuidmenentukan UID Akun Alibaba Cloud dari penyedia layanan, danAccessKeyIDsertaAccessKeySecretmenentukan kunci akses penyedia layanan.PentingAnda dapat memberikan izin berikut pada kunci akses untuk mengizinkan penyedia layanan hanya memanggil operasi
arms:GetPrometheusApiTokenuntuk pengumpulan atau kueri data. Konfigurasi ini mengikuti prinsip hak istimewa minimal sambil memenuhi persyaratan pemantauan, yang secara efektif mengurangi risiko keamanan.{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "arms:GetPrometheusApiToken" ], "Resource": "*" } ] }SyncServiceMonitor: menentukan apakah akan secara otomatis menyinkronkanServiceMonitordi kluster. Anda dapat menggunakan opsi ini untuk memilihServiceuntuk didengarkan. Untuk informasi lebih lanjut, lihat Gunakan ServiceMonitors untuk Menemukan dan Memantau Layanan.SyncPodMonitor: menentukan apakah akan secara otomatis menyinkronkanPodMonitordi kluster.
(Opsional) Jika kluster ACK baru dibuat menggunakan template ROS, tambahkan parameter
Addonske sumber daya ACK dalam template ROS, seperti yang ditunjukkan pada gambar berikut.
Layanan terkelola penuh multi-tenant
Dalam skenario layanan terkelola penuh multi-tenant, Compute Nest menyediakan layanan infrastruktur kontainer di halaman Katalog Layanan. Anda dapat membuat instance layanan untuk Managed Service for Prometheus di kluster ACK.
Anda dapat memberikan izin berikut pada kunci akses untuk mengizinkan penyedia layanan hanya memanggil operasi arms:GetPrometheusApiToken untuk pengumpulan atau kueri data. Konfigurasi ini mengikuti prinsip hak istimewa minimal sambil memenuhi persyaratan pemantauan, yang secara efektif mengurangi risiko keamanan.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"arms:GetPrometheusApiToken"
],
"Resource": "*"
}
]
}Langkah 2: Konfigurasikan template ROS
Buat namespace bernama ID instance layanan dan tambahkan tag tenant ke namespace.
Catatantenant_userid,tenant_clusterid,tenant_token, dantenant_cloudproductcodeadalahkeysdari tag tenant. Anda hanya perlu memasukkan placeholder tetap dalam template. Nama namespace diatur ke placeholder {{ serviceInstanceId }}, yang menunjukkan bahwa namespace dinamai setelahserviceInstanceIddari instance layanan yang dibuat.ClusterNameSpaceApplication: Type: ALIYUN::CS::ClusterApplication Properties: YamlContent: Fn::Sub: - | apiVersion: v1 kind: Namespace metadata: name: '${Name}' labels: tenant_userid: '{{ aliUid }}' tenant_clusterid: '{{ tenantClusterId }}' tenant_token: '{{ tenantToken }}' tenant_cloudproductcode: '{{ tenantCloudProductCode }}' - Name: '{{ serviceInstanceId }}' ClusterId: Fn::If: - Condition: CreateACKCondition - Ref: ManagedKubernetesCluster - Ref: ClusterIdPentingAplikasi penyedia layanan harus diterapkan di namespace yang Anda buat agar sistem pemantauan dapat mendistribusikan data deret waktu aplikasi ke tenant.
(Opsional) Untuk layanan terkelola penuh single-tenant, template ROS harus mereferensikan modul
AckArmsConfiguntuk mengonfigurasi Managed Service for Prometheus di setiap kluster ACK yang baru dibuat.(Opsional) Pantau data deret waktu kustom menggunakan port HTTP atau Exporter.
Serviceyang datanya dipantau juga harus dinamai{{ serviceInstanceId }}, danServiceMonitorharus ditentukan untuk penemuan layanan. Dalam contoh ini, mysqld-exporter digunakan untuk mengkueri data deret waktu MySQL. Contoh kode berikut memberikan contohServicedanServiceMonitor:apiVersion: v1 kind: Service metadata: name: {{ serviceInstanceId }} labels: io.mysql.service: {{ serviceInstanceId }} spec: selector: app: mysql ports: - protocol: TCP port: 3306 targetPort: 3306 name: mysql - protocol: TCP port: 9104 targetPort: 9104 name: mysql-exporter type: LoadBalancerapiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: prometheus-service-monitor annotations: arms.prometheus.io/discovery: 'true' labels: prometheus-service-monitor: prometheus-service-monitor spec: selector: matchLabels: io.mysql.service: {{ serviceInstanceId }} namespaceSelector: matchNames: - {{ serviceInstanceId }} endpoints: - port: mysql-exporter scheme: http path: /metrics interval: 10s scrapeTimeout: 10s
Langkah 3: Konfigurasikan dasbor Grafana
Setiap instance layanan hanya mendukung satu dasbor. Jika penyedia layanan memiliki beberapa dasbor, penyedia layanan harus menggabungkannya menjadi satu dasbor. Dasbor harus memenuhi aturan berikut:
Tentukan variabel global tetap dari dasbor sebagai namespace, dan dasbor memfilter data deret waktu setiap aplikasi berdasarkan namespace. Buat dasbor di Alibaba Cloud Managed Grafana dan dapatkan URL ke dasbor.
Langkah 4: Konfigurasikan pengenal produk dan tautan dasbor yang sesuai
Sebelum layanan terkelola penuh multi-tenant dapat menggunakan kemampuan Managed Service for Prometheus yang disediakan oleh Compute Nest, tentukan pengenal produk dan informasi dasbor:
Tentukan pengenal produk. Pengenal produk secara unik mengidentifikasi layanan dalam sistem pemantauan. Pengenal produk cn-mariadb digunakan untuk pengujian dan dibagikan oleh semua layanan di wilayah China (Hangzhou) dan China (Hong Kong).
CatatanJika Anda perlu mendapatkan pengenal produk unik untuk layanan yang akan diterbitkan, bergabunglah dengan grup DingTalk yang disebutkan di atas untuk dukungan teknis.
Konfigurasikan pengaturan dasbor, yang mencakup judul dan URL dasbor Grafana. Dapatkan URL dan judul dasbor yang Anda buat di Langkah 3.
CatatanAnda harus mengonfigurasi pengaturan dasbor secara manual. Bergabunglah dengan grup DingTalk untuk dukungan teknis.
Gambar berikut menunjukkan konfigurasi layanan Prometheus contoh yang menggunakan pengenal produk
cn-mariadb.
Langkah 5: Konfigurasikan templat aturan peringatan Prometheus
Masuk ke konsol Application Real-Time Monitoring Service (ARMS). Di halaman Prometheus Alert Rule Templates, buat templat aturan peringatan Prometheus. Untuk informasi lebih lanjut, lihat Buat dan Kelola Templat Aturan Peringatan.
Setelah pembuatan, dapatkan nilai TemplateId dari respons jaringan di konsol ARMS, seperti yang ditunjukkan pada gambar berikut.
PentingAnda harus mengubah All Check Types menjadi Static Threshold (area ①) di sudut kanan atas, tekan tombol F12, dan kemudian dapatkan nilai TemplateId dari bidang (area ②) dalam respons jaringan.
Ubah isi templat aturan peringatan dalam template ROS. Terapkan templat aturan peringatan ke kluster ACK dengan memanggil operasi ALIYUN::ARMS::ApplyAlertRuleTemplate untuk membuat aturan peringatan yang sesuai di kluster ACK. Contoh template ROS:
ROSTemplateFormatVersion: '2015-09-01' Description: en: ApplyAlertRule Parameters: ClusterIds: AssociationPropertyMetadata: Parameter: Required: true Type: String Description: en: The ID of the Prometheus Instance. Description: en: The IDs list of Prometheus Instances. Default: Null MinLength: 1 Required: false MaxLength: 100 AssociationProperty: List[Parameter] Type: Json TemplateIds: AssociationPropertyMetadata: Parameter: Required: true Type: String Description: en: The ID of the Prometheus alert rule template. Description: en: The IDs list of Prometheus alert rule templates. Default: Null MinLength: 1 Required: false MaxLength: 100 AssociationProperty: List[Parameter] Type: Json Resources: ApplyAlertRuleTemplate: Type: ALIYUN::ARMS::ApplyAlertRuleTemplate Properties: ClusterIds: Ref: ClusterIds TemplateIds: Ref: TemplateIds
Langkah 6: Lihat data pemantauan
Setelah instance layanan Prometheus diterapkan, Anda dapat melihat dasbor di halaman detail instance layanan di sisi pengguna dan sisi penyedia layanan.
Sisi pengguna:

Sisi penyedia layanan:
