Este tópico descreve como os provedores de service podem configurar monitoramento e alertas para serviços totalmente gerenciados do Compute Nest implantados no Container Service for Kubernetes (ACK).
O processo de integração do Managed Service for Prometheus é o mesmo para serviços totalmente gerenciados single-tenant (com cluster dedicado por usuário) e multi-tenant (com cluster compartilhado). Em ambos os cenários, configure o Managed Service for Prometheus no cluster do Container Service for Kubernetes (ACK) para encaminhar as métricas do tenant. Assim, tenants e provedores de service podem visualizar as métricas de monitoramento da instância de service. (Para suporte técnico, entre no grupo do DingTalk: 31045016300)
Como funciona

O Compute Nest utiliza o Managed Service for Prometheus, recurso do Application Real-Time Monitoring Service (ARMS), como solução de monitoramento multi-tenant.
O Managed Service for Prometheus oferece suporte nativo a multi-tenancy. Na coleta de dados, o agente aplica rótulos específicos de tenant aos recursos de workload (no nível de Pod ou namespace) para diferenciar as métricas e encaminhá-las às respectivas instâncias de service na cloud.
O armazenamento fornece isolamento multi-tenant nativo. Os provedores de service precisam apenas adicionar rótulos específicos aos recursos de workload de cada tenant.
O Compute Nest usa namespaces para isolar recursos em instâncias de service totalmente gerenciadas multi-tenant. Ao adicionar os rótulos correspondentes a um namespace, o sistema encaminha automaticamente as métricas para a respectiva instância de service na cloud.
Também é possível configurar o remote write para enviar uma cópia dos dados de monitoramento de cada tenant à conta do provedor de service. Dessa forma, o provedor visualiza os dados de todos os tenants, enquanto cada tenant acessa apenas seus próprios dados.
Procedimento
Etapa 1: Configurar o Managed Service for Prometheus para o ACK
Por padrão, o Prometheus não suporta encaminhamento de métricas. Aplique configurações adicionais no Managed Service for Prometheus para encaminhar métricas de monitoramento de aplicações a usuários específicos.
Serviço single-tenant
Para serviços totalmente gerenciados single-tenant, o Compute Nest encapsula essa configuração em um módulo de modelo ROS pronto para uso.
-
Ao criar o service, adicione o seguinte conteúdo ao modelo ROS. As seções abaixo apresentam um modelo de exemplo e descrevem seus parâmetros.
-
Modelo de exemplo:
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 -
Parâmetros:
-
WhetherSupplierNeedMetric: Especifica se o provedor de service precisa receber dados do tenant. Caso o provedor também precise receber métricas, defina este valor comotrue. SeWhetherSupplierNeedMetricfortrue, configure obrigatoriamente as propriedadesAccessKeyID,AccessKeySecreteSupplierAliuid. OSupplierAliuidcorresponde ao UID da conta Alibaba Cloud do provedor de service, enquanto AccessKeyID e AccessKeySecret formam o par de AccessKey do provedor.ImportantePara seguir o princípio do menor privilégio, conceda à AccessKey (AK) apenas permissão para chamar a API
arms:GetPrometheusApiToken. Isso basta para coleta de dados e consultas em cenários de monitoramento.{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "arms:GetPrometheusApiToken" ], "Resource": "*" } ] } SyncServiceMonitor: Define se os recursosServiceMonitordo cluster devem ser sincronizados automaticamente. Use esta opção para selecionar os recursosServicea monitorar. Para mais informações, consulte Create service discovery by using a ServiceMonitor.SyncPodMonitor: Determina se os recursosPodMonitordo cluster serão sincronizados automaticamente.
-
-
-
(Opcional) Caso crie um novo cluster ACK com um modelo ROS, adicione o parâmetro Addons ao recurso ACK conforme mostrado abaixo.
LoginPassword: Ref: LoginPassword SnatEntry: true Addons: - Name: flannel Config: '' - Name: arms-prometheus
Serviço multi-tenant
Para serviços totalmente gerenciados multi-tenant, o Compute Nest disponibiliza o service Cenário multi-tenant totalmente gerenciado do ACK - implantação de infraestrutura de contêineres. Crie uma instância desse service para configurar o Managed Service for Prometheus no cluster ACK.
Para respeitar o princípio do menor privilégio, conceda à AK somente permissão para chamar a API arms:GetPrometheusApiToken. Essa permissão atende plenamente às necessidades de coleta e consulta de dados em cenários de monitoramento.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"arms:GetPrometheusApiToken"
],
"Resource": "*"
}
]
}
Etapa 2: Configurar o modelo ROS
-
Crie um namespace com o nome do ID da instância de service e adicione rótulos de tenant a ele.
NotaAs chaves dos rótulos de tenant são
tenant_userid,tenant_clusterid,tenant_tokenetenant_cloudproductcode. O modelo ROS utiliza placeholders para esses valores. O namespace recebe o nome do placeholder {{ serviceInstanceId }}, substituído pelo ID daservice instancecriada.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: ClusterIdImportanteImplante a aplicação do provedor de service no namespace criado na etapa anterior para garantir que as métricas de monitoramento sejam roteadas ao tenant correto.
(Opcional) No cenário de service totalmente gerenciado single-tenant, use o módulo
AckArmsConfigno modelo ROS para configurar o Managed Service for Prometheus em cada novo cluster ACK criado.-
(Opcional) Para coletar métricas personalizadas, exponha-as por uma porta HTTP ou com um exporter. Nomeie o
Serviceque expõe as métricas como{{ serviceInstanceId }}e defina umServiceMonitorpara descoberta de serviços. O exemplo a seguir mostra oServicee oServiceMonitorusados para coletar métricas do MySQL com o mysqld-exporter.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
Etapa 3: Configurar o painel do Grafana
Cada instância de service suporta apenas um painel. Caso tenha múltiplos painéis, consolide-os em um único. O painel deve atender ao seguinte requisito:
Crie uma variável de painel chamada Namespace e use-a como filtro global para as métricas de monitoramento da aplicação. Crie o painel no Managed Service for Grafana e obtenha o link correspondente.
Etapa 4: Configurar o identificador do product e o link do painel
Para usar o Managed Service for Prometheus com um service totalmente gerenciado multi-tenant do Compute Nest, configure o identificador do product e as informações do painel de monitoramento.
-
Identificador do product: Identifica exclusivamente o service no sistema de monitoramento. Para testes, use o identificador compartilhado cn-mariadb, disponível nas regiões China (Hangzhou) e China (Hong Kong).
NotaO uso em produção exige um identificador de product dedicado. Para obter um, entre no grupo de suporte técnico mencionado no início deste tópico.
-
As configurações do painel de monitoramento incluem título e link do painel do Grafana, com mapeamento um para um com o identificador de product.
NotaAtualmente, esta configuração requer setup manual. Entre no grupo de suporte técnico para obter assistência.
Abaixo está a configuração de um service de exemplo que usa o identificador
cn-mariadb. Com cn-mariadb, é possível utilizar a configuração padrão do painel de monitoramento, cujo título é MySQL Exporter Quickstart and Dashboard.
Etapa 5: Configurar alertas
Acesse o console do ARMS para Prometheus Monitoring e crie um modelo de regra de alerta do Prometheus. Para mais informações, consulte Create a Prometheus alert rule template.
-
Após criar o modelo, obtenha o TemplateId nas requisições de rede do console, conforme descrito abaixo.
ImportanteA requisição de rede correspondente aparece somente após aplicar um filtro de busca.
Na página de modelos de regras de alerta, use a lista suspensa static threshold na parte superior para filtrar e pesquisar. Uma requisição
alert.json?action=AlertTemplateActionaparecerá no painel Network das DevTools do navegador. Clique em na requisição e visualize a aba Response. No JSON retornado, localize o campoid(por exemplo,d9a9fb3b-47a9-4338-84f5-93240e03b4ee). Este valor corresponde ao TemplateId necessário. -
No modelo ROS, defina e aplique o modelo de regra de alerta ao cluster ACK com o recurso ALIYUN::ARMS::ApplyAlertRuleTemplate para criar as regras de alerta correspondentes no cluster. O exemplo a seguir mostra um trecho do modelo ROS.
ROSTemplateFormatVersion: '2015-09-01' Description: en: ApplyAlertRule zh-cn: 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
Etapa 6: Visualizar dados de monitoramento
Após a implantação da instância de service, tanto o tenant quanto o provedor de service podem visualizar o painel de monitoramento na página de detalhes da instância.
Visualização do tenant:

Visualização do provedor de service:
