Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Monitoramento de aplicações Python

Última atualização: Jun 27, 2026

Use o Application Real-Time Monitoring Service (ARMS) para monitorar aplicações Python implantadas em um cluster do Alibaba Cloud Container Service for Kubernetes (ACK). Os frameworks compatíveis incluem Django, Flask, FastAPI, LlamaIndex e Langchain. O ARMS fornece topologia de aplicação, análise de rastreamento, análise de chamadas de API, detecção de anomalias e rastreamento detalhado de interações com modelos de linguagem grandes (LLM).

Escolha um caminho de instalação

O ARMS oferece duas formas de instrumentar sua aplicação Python. Escolha uma opção com base na versão do ack-onepilot:

Caminho

Quando usar

Etapas necessárias

Manual agent installation (esta página)

A versão do ack-onepilot é anterior à 5.0.0 ou você deseja controle total sobre a instalação do agente

Etapas 1–5

Auto-instrumentação

A versão do ack-onepilot é posterior à 5.0.0 e você prefere uma configuração sem alterações no Dockerfile

Pule a Etapa 3. Na Etapa 4, adicione os três rótulos e armsAutoInstrumentationEnable: "on". O ack-onepilot baixa e injeta o agente Python automaticamente.

Pré-requisitos

Antes de começar, verifique se você tem:

Etapa 1: Instale o complemento ack-onepilot

O ack-onepilot substitui o componente obsoleto arms-pilot e mantém total compatibilidade com ele. Nenhuma alteração na configuração da aplicação é necessária.

  1. Faça login no console do ACK. No painel de navegação à esquerda, clique em console do ACKconsole do ACKconsole do ACKconsole do ACKClusters.

  2. Na página Clusters, clique em nome do cluster de destino. No painel de navegação à esquerda, clique em Add-ons.

  3. Na seção Logs and Monitoring, localize ack-onepilot e clique em Install. Na caixa de diálogo exibida, mantenha os valores padrão e clique em OK.

Use a versão 3.2.4 ou superior do ack-onepilot. Por padrão, o ack-onepilot suporta até 1.000 pods. Para cada 1.000 pods adicionais, aumente a CPU do ack-onepilot em 0,5 núcleo e a memória em 512 MB.

Após a instalação, atualize, configure ou desinstale o ack-onepilot na página Add-ons.

Para migrar do arms-pilot, consulte Como desinstalo o arms-pilot e instalo o ack-onepilot?

Etapa 2: Autorizar o ARMS a acessar recursos

O ARMS usa addon.arms.token para autorização sem senha. A maioria dos clusters gerenciados do ACK inclui esse secret por padrão, mas alguns clusters mais antigos podem não incluí-lo.

Verifique se o cluster possui o token:

Verificar o secret addon.arms.token no cluster

  1. Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique em nome do cluster de destino. No painel de navegação à esquerda, escolha Configurations > Secrets.

  3. Selecione kube-system na lista suspensa Namespace e verifique se addon.arms.token existe.

Se o token estiver ausente, conceda as permissões manualmente:

  1. Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique em nome do cluster de destino. No painel de navegação à esquerda, clique em Cluster Information.

  3. Na aba Basic Information, em Cluster Resources, clique em link ao lado de Worker RAM Role.

  4. Na aba Permissions, clique em Grant Permission.

  5. Selecione a política AliyunARMSFullAccess e clique em Grant permissions.

Se o cluster estiver conectado a uma Elastic Container Instance (ECI), acesse a página de Autorização Rápida do RAM e conclua a autorização. Em seguida, reinicie os pods criados para o ack-onepilot.

Etapa 3: Integrar o agente Python ao Dockerfile

Modifique o Dockerfile para instalar e iniciar o agente Python. As alterações envolvem três linhas:

  • **Instale aliyun-bootstrap via PyPI** — ferramenta de instalação do agente Python do ARMS.

  • Execute o instalador do agente — baixa e configura o agente usando o ID da região da Alibaba Cloud.

  • Alterar o comando de inicialização — envolva a aplicação com aliyun-instrument para ativar o monitoramento.

Dockerfile antes da modificação

# Use the Python 3.10 base image.
FROM docker.m.daocloud.io/python:3.10

# Set the working directory.
WORKDIR /app

# Copy the requirements.txt file to the working directory.
COPY requirements.txt .

# Use pip to install dependencies.
RUN pip install --no-cache-dir -r requirements.txt

COPY ./app.py /app/app.py
# Expose port 8000 of the container.
EXPOSE 8000
CMD ["python","app.py"]

Dockerfile modificado

# Use the official Python 3.10 base image.
FROM docker.m.daocloud.io/python:3.10

# Set the working directory.
WORKDIR /app

# Copy the requirements.txt file to the working directory.
COPY requirements.txt .

# Use pip to install dependencies.
RUN pip install --no-cache-dir -r requirements.txt

# Install the ARMS Python agent.
# Replace xxx with your Alibaba Cloud region ID (for example, cn-hangzhou).
RUN pip3 install aliyun-bootstrap && ARMS_REGION_ID=xxx aliyun-bootstrap -a install

COPY ./app.py /app/app.py

# Expose port 8000 of the container.
EXPOSE 8000
# Start the application with the ARMS Python agent enabled.
CMD ["aliyun-instrument","python","app.py"]
Para instalar uma versão específica do agente, execute aliyun-bootstrap -a install -v <version> em vez de aliyun-bootstrap -a install . Para ver as versões disponíveis, consulte as Notas de lançamento do agente Python .

Após editar o Dockerfile, construa a imagem e envie-a para o registro.

Etapa 4: Ative o monitoramento de aplicações do ARMS

Adicione rótulos ao modelo de pod do Deployment para ativar o monitoramento.

  1. Faça login no console do ACK. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique em nome do cluster de destino. No painel de navegação à esquerda, escolha Workloads > Deployments.

  3. Na página Deployments, clique em image > Edit YAML da aplicação de destino.

  4. Em spec.template.metadata, adicione os seguintes rótulos:

    labels:
      aliyun.com/app-language: python        # Required. Identifies this as a Python application.
      armsPilotAutoEnable: 'on'
      armsPilotCreateAppName: "deployment-name"    # The display name of the application in ARMS.

    Substitua deployment-name pelo nome a ser exibido no console do ARMS.

    image

Importante

Se a versão do ack-onepilot for posterior à 5.0.0, ele baixa e injeta o agente Python automaticamente. Nenhuma alteração no Dockerfile é necessária. Caso já tenha instalado o agente manualmente no contêiner (Etapa 3), desative a injeção automática adicionando o seguinte rótulo:

armsAutoInstrumentationEnable: "off"

Exemplo completo de YAML

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: arms-python-client
  name: arms-python-client
  namespace: arms-demo
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: arms-python-client
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: arms-python-client
        aliyun.com/app-language: python
        armsPilotAutoEnable: 'on'
        armsPilotCreateAppName: "arms-python-client"
    spec:
      containers:
        - image: registry.cn-hangzhou.aliyuncs.com/arms-default/python-agent:arms-python-client
          imagePullPolicy: Always
          name: client
          resources:
            requests:
              cpu: 250m
              memory: 300Mi
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30

---

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: arms-python-server
  name: arms-python-server
  namespace: arms-demo
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: arms-python-server
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: arms-python-server
        aliyun.com/app-language: python
        armsPilotAutoEnable: 'on'
        armsPilotCreateAppName: "arms-python-server"
    spec:
      containers:
        - env:
          - name: CLIENT_URL
            value: 'http://arms-python-client-svc:8000'
          image: registry.cn-hangzhou.aliyuncs.com/arms-default/python-agent:arms-python-server
          imagePullPolicy: Always
          name: server
          resources:
            requests:
              cpu: 250m
              memory: 300Mi
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30

---

apiVersion: v1
kind: Service
metadata:
  labels:
    app: arms-python-server
  name: arms-python-server-svc
  namespace: arms-demo
spec:
  internalTrafficPolicy: Cluster
  ipFamilies:
    - IPv4
  ipFamilyPolicy: SingleStack
  ports:
    - name: http
      port: 8000
      protocol: TCP
      targetPort: 8000
  selector:
    app: arms-python-server
  sessionAffinity: None
  type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:
  name: arms-python-client-svc
  namespace: arms-demo
spec:
  internalTrafficPolicy: Cluster
  ipFamilies:
    - IPv4
  ipFamilyPolicy: SingleStack
  ports:
    - name: http
      port: 8000
      protocol: TCP
      targetPort: 8000
  selector:
    app: arms-python-client
  sessionAffinity: None
  type: ClusterIP

O YAML a seguir cria dois Deployments (arms-python-client e arms-python-server) e dois Services no namespace arms-demo, com o monitoramento do ARMS ativado.

Etapa 5: Visualize dados de monitoramento

Após cerca de um minuto, a aplicação aparecerá no console do ARMS.

  1. Acesse o console do ARMS e acesse Application Monitoring > Application List.

    image

  2. Clique em nome da aplicação para visualizar métricas detalhadas. Para obter uma descrição completa da página de monitoramento, consulte Visão Geral da Aplicação.

Solução de problemas

Se a aplicação não aparecer no console do ARMS após um minuto, verifique os itens a seguir:

Confirme se os pods estão em execução e se os rótulos foram aplicados:

kubectl get pods -n arms-demo
kubectl describe pod <pod-name> -n arms-demo | grep -A 10 "Labels:"

Verifique se os rótulos do pod incluem armsPilotAutoEnable: on e aliyun.com/app-language: python.

Causas comuns para ausência de dados de monitoramento:

Sintoma

Causa provável

Correção

Aplicação não aparece no console do ARMS

Rótulos ausentes ou incorretos

Verifique novamente os nomes dos rótulos no YAML do Deployment

Aplicação listada, mas sem dados

Versão do Python inferior à 3.8

Atualize para Python 3.8 ou superior

Aplicação listada, mas sem dados

Agente não instalado (caminho manual)

Confirme se o Dockerfile inclui tanto a linha de instalação do aliyun-bootstrap quanto o CMD do aliyun-instrument

Erros de autorização nos logs do pod

addon.arms.token ausente

Conclua a Etapa 2 e reinicie os pods afetados

(Opcional) Liberar recursos

Para interromper o monitoramento, desinstale o agente Python. Consulte Desinstalar o agente Python.

Próximos passos