Todos los productos
Search
Centro de documentos

Container Service for Kubernetes:Python application monitoring

Última actualización: Sep 17, 2026

Para las aplicaciones Python desplegadas en clústeres de ACK, como las aplicaciones web construidas con frameworks como Django, Flask y FastAPI, o las aplicaciones de IA y LLM desarrolladas con LlamaIndex y Langchain, puede usar Application Real-Time Monitoring Service (ARMS) para monitorear el rendimiento. Para habilitar el monitoreo, instale el componente ack-onepilot y modifique su Dockerfile. Esto activa funciones como la topología de la aplicación, el rastreo, el análisis de llamadas a API, la detección de anomalías y el seguimiento detallado de las interacciones con modelos grandes.

Requisitos previos

Paso 1: Instalar el componente ack-onepilot

Importante

El componente heredado arms-pilot ya no recibe mantenimiento. ack-onepilot es su reemplazo y resulta totalmente compatible; la migración no requiere cambios en la configuración de su aplicación. Para consultar los pasos de migración, vea Uninstall arms-pilot and install ack-onepilot.

  1. Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.

  2. En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en Components and Add-ons .

  3. En la sección Logs and Monitoring, busque el complemento ack-onepilot y haga clic en Install dentro de la tarjeta del complemento.

    Nota

    Asegúrese de que la versión de ack-onepilot sea la 3.2.4 o posterior. De forma predeterminada, el componente ack-onepilot admite hasta 1,000 pods. Por cada 1,000 pods adicionales que superen este límite, aumente los recursos de CPU de ack-onepilot en 0.5 núcleos y los de memoria en 512 MB.

    Una vez finalizada la instalación, puede actualizar, configurar o desinstalar el complemento ack-onepilot desde la página Add-ons.

Paso 2: Autorizar a ARMS para acceder a los recursos

ARMS utiliza addon.arms.token para la autorización sin contraseña. La mayoría de los clústeres administrados de ACK incluyen este secreto de forma predeterminada, aunque algunos clústeres más antiguos podrían no tenerlo.

Compruebe si su clúster cuenta con el token:

Comprobar el secreto addon.arms.token en el clúster

  1. Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.

  2. En la página Clusters, haga clic en el nombre del clúster de destino. En el panel de navegación izquierdo, elija Configurations > Secrets.

  3. Seleccione kube-system en la lista desplegable Namespace y compruebe si existe addon.arms.token.

Si falta el token, otorgue los permisos manualmente:

  1. Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.

  2. En la página Clusters, haga clic en el nombre del clúster de destino. En el panel de navegación izquierdo, haga clic en Cluster Information.

  3. En la pestaña Basic Information, dentro de Cluster Resources, haga clic en el enlace junto a Worker RAM Role.

  4. En la pestaña Permissions, haga clic en Grant Permission.

  5. Seleccione la política AliyunARMSFullAccess y haga clic en Grant permissions.

Si su clúster está conectado a una Elastic Container Instance (ECI), vaya a la página RAM Quick Authorization y complete la autorización. Después, reinicie los pods creados para ack-onepilot.

Paso 3: Integrar el agente de Python de ARMS en su Dockerfile

Modifique su Dockerfile para integrar el agente de Python de ARMS y úselo para iniciar su aplicación Python.

  1. Instale el instalador del agente desde PyPI:

       RUN pip3 install aliyun-bootstrap
  2. Instale el agente. Reemplace <region-id> con el identificador de su región de Alibaba Cloud (por ejemplo, cn-hangzhou):

    Nota

    Para instalar una versión específica del agente, ejecute: aliyun-bootstrap -a install -v <version> Para consultar todas las versiones publicadas, vea Python agent release notes.

       RUN ARMS_REGION_ID=<region-id> aliyun-bootstrap -a install
  3. Actualice el comando de inicio para usar el prefijo aliyun-instrument:

       CMD ["aliyun-instrument", "python", "app.py"]
  4. Compile la imagen.

A continuación se muestra un ejemplo completo de Dockerfile:

Antes:

FROM docker.m.daocloud.io/python:3.10

WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY ./app.py /app/app.py
EXPOSE 8000
CMD ["python", "app.py"]

Después (con el agente de ARMS):

FROM docker.m.daocloud.io/python:3.10

WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# Install the ARMS Python agent
RUN pip3 install aliyun-bootstrap \
    && ARMS_REGION_ID=<region-id> aliyun-bootstrap -a install

COPY ./app.py /app/app.py
EXPOSE 8000

# Start the application with the ARMS agent
CMD ["aliyun-instrument", "python", "app.py"]

Paso 4: Habilitar el monitoreo de ARMS

  1. Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.

  2. En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en Workloads > Deployments.

  3. En la página Deployments, busque su aplicación y haga clic en image > Edit YAML dentro de la columna Actions.

  4. Agregue las siguientes etiquetas bajo spec.template.metadata: Reemplace <app-name> con un nombre descriptivo para su aplicación, como my-python-service.

    Importante

    Si utiliza una versión de ack-onepilot posterior a la 5.0.0, pero ya instaló el agente manualmente en su Dockerfile, deshabilite la inyección automática agregando esta etiqueta: ``yaml armsAutoInstrumentationEnable: "off" ``

       labels:
         aliyun.com/app-language: python       # Required. Identifies this as a Python application.
         armsPilotAutoEnable: 'on'             # Enables ARMS monitoring.
         armsPilotCreateAppName: "<app-name>"  # Display name in the ARMS console.

    El siguiente código proporciona una plantilla YAML completa para crear un Deployment y habilitar el monitoreo de la aplicación:

    Ejemplo 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 # Required. Specifies the application language as Python.
            armsPilotAutoEnable: 'on'
            armsPilotCreateAppName: "arms-python-client"    # The application's display name in the ARMS console.
        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 # Required. Specifies the application language as Python.
            armsPilotAutoEnable: 'on'
            armsPilotCreateAppName: "arms-python-server"    # The application's display name in the ARMS console.
        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
    

Paso 5: Consultar los detalles de monitoreo

  1. Después de aproximadamente un minuto, inicie sesión en la consola de ARMS. En el panel de navegación izquierdo, elija Application Monitoring > Applications para consultar su aplicación Python y los datos reportados.

    En la lista de aplicaciones, verá la aplicación arms-python-client conectada junto con sus métricas, como las solicitudes por segundo, la tasa de errores y el tiempo promedio de respuesta.

  2. Haga clic en Application Name para ir a la página de monitoreo de la aplicación en la consola de ARMS y consultar la información de monitoreo detallada. Para obtener más información, vea Application overview.

(Opcional) Paso 6: Liberar recursos

Si ya no necesita monitorear su aplicación Python con ARMS, desinstale el agente de Python de ARMS para detener el monitoreo. Para obtener más información, consulte Uninstall the Python agent.