All Products
Search
Document Center

Compute Nest:Konfigurasikan Pemantauan dan Peringatan Bisnis untuk Layanan Terkelola Penuh yang Diterapkan di Kluster ACK

Last Updated:Jul 06, 2025

Topik ini menjelaskan cara penyedia layanan dapat mengonfigurasi pemantauan dan peringatan bisnis untuk layanan terkelola penuh dalam kluster Container Service for Kubernetes (ACK).

Catatan

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

image

  • 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.

  1. 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: 15634578xxxxxx
    • Parameter:

      • WhetherSupplierNeedMetric: menentukan apakah penyedia layanan perlu menerima data tenant. Nilai true menunjukkan bahwa penyedia layanan perlu menerima data deret waktu tenant. Jika WhetherSupplierNeedMetric diatur ke true, tentukan AccessKeyID, AccessKeySecret, dan SupplierAliuid. SupplierAliuid menentukan UID Akun Alibaba Cloud dari penyedia layanan, dan AccessKeyID serta AccessKeySecret menentukan kunci akses penyedia layanan.

        Penting

        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": "*"
            }
          ]
        }
      • SyncServiceMonitor: menentukan apakah akan secara otomatis menyinkronkan ServiceMonitor di kluster. Anda dapat menggunakan opsi ini untuk memilih Service untuk didengarkan. Untuk informasi lebih lanjut, lihat Gunakan ServiceMonitors untuk Menemukan dan Memantau Layanan.

      • SyncPodMonitor: menentukan apakah akan secara otomatis menyinkronkan PodMonitor di kluster.

  2. (Opsional) Jika kluster ACK baru dibuat menggunakan template ROS, tambahkan parameter Addons ke sumber daya ACK dalam template ROS, seperti yang ditunjukkan pada gambar berikut. image

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.

Penting

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

  1. Buat namespace bernama ID instance layanan dan tambahkan tag tenant ke namespace.

    Catatan

    tenant_userid, tenant_clusterid, tenant_token, dan tenant_cloudproductcode adalah keys dari tag tenant. Anda hanya perlu memasukkan placeholder tetap dalam template. Nama namespace diatur ke placeholder {{ serviceInstanceId }}, yang menunjukkan bahwa namespace dinamai setelah serviceInstanceId dari 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: ClusterId
    Penting

    Aplikasi penyedia layanan harus diterapkan di namespace yang Anda buat agar sistem pemantauan dapat mendistribusikan data deret waktu aplikasi ke tenant.

  2. (Opsional) Untuk layanan terkelola penuh single-tenant, template ROS harus mereferensikan modul AckArmsConfig untuk mengonfigurasi Managed Service for Prometheus di setiap kluster ACK yang baru dibuat.

  3. (Opsional) Pantau data deret waktu kustom menggunakan port HTTP atau Exporter. Service yang datanya dipantau juga harus dinamai {{ serviceInstanceId }}, dan ServiceMonitor harus ditentukan untuk penemuan layanan. Dalam contoh ini, mysqld-exporter digunakan untuk mengkueri data deret waktu MySQL. Contoh kode berikut memberikan contoh Service dan ServiceMonitor:

    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: LoadBalancer
    apiVersion: 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:

  1. 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).

    Catatan

    Jika Anda perlu mendapatkan pengenal produk unik untuk layanan yang akan diterbitkan, bergabunglah dengan grup DingTalk yang disebutkan di atas untuk dukungan teknis.

  2. Konfigurasikan pengaturan dasbor, yang mencakup judul dan URL dasbor Grafana. Dapatkan URL dan judul dasbor yang Anda buat di Langkah 3.

    Catatan

    Anda harus mengonfigurasi pengaturan dasbor secara manual. Bergabunglah dengan grup DingTalk untuk dukungan teknis.

  3. Gambar berikut menunjukkan konfigurasi layanan Prometheus contoh yang menggunakan pengenal produk cn-mariadb. image

Langkah 5: Konfigurasikan templat aturan peringatan Prometheus

  1. 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.

  2. Setelah pembuatan, dapatkan nilai TemplateId dari respons jaringan di konsol ARMS, seperti yang ditunjukkan pada gambar berikut.

    Penting

    Anda 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.

  3. 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: image

  • Sisi penyedia layanan: image