Habilitación de Application Signals en plataformas de Kubernetes - Amazon CloudWatch

Habilitación de Application Signals en plataformas de Kubernetes

Para habilitar las aplicaciones que se ejecutan en sistemas Kubernetes distintos de Amazon EKS, siga las instrucciones de esta sección. Application Signals es compatible con aplicaciones de Java y de Python.

Requisitos

  • Tiene permiso de administrador en el clúster de Kubernetes en el que está habilitando Application Signals.

  • Debe tener la AWS CLI instalada en el entorno en el que se ejecuta el clúster de Kubernetes. Para obtener información sobre cómo instalar AWS CLI, consulte Instalar o actualizar la versión más reciente de la AWS CLI.

  • Debe tener kubectl y helm instalados en su terminal local. Para más información, consulte la documentación de kubectl y Helm.

Paso 1: habilitar Application Signals en la cuenta

Si aún no ha activado Application Signals en esta cuenta, debe conceder a Application Signals los permisos que necesita para descubrir los servicios. Para ello, haga lo siguiente. Solo es necesario hacerlo una vez para la cuenta.

Para habilitar Application Signals para las aplicaciones
  1. Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/.

  2. En el panel de navegación, elija Servicios.

  3. Elija Comenzar a descubrir sus servicios.

  4. Marque la casilla de verificación y seleccione Empiece a descubrir los servicios.

    Cuando completa este paso por primera vez en la cuenta, Application Signals crea el rol vinculado al servicio AWSServiceRoleForCloudWatchApplicationSignals. Este rol otorga a Application Signals los siguientes permisos:

    • xray:GetServiceGraph

    • logs:StartQuery

    • logs:GetQueryResults

    • cloudwatch:GetMetricData

    • cloudwatch:ListMetrics

    • tag:GetResources

    Para obtener más información acerca de este rol, consulte Permisos de roles vinculados a un servicio para CloudWatch Application Signals.

Paso 2: instalar el operador del agente de CloudWatch en su clúster

Al instalar el operador del agente de CloudWatch, se instalarán el operador, el agente de CloudWatch y otras instrumentaciones automáticas en el clúster. Para ello, introduzca el siguiente comando. Sustituya $REGION por su región de AWS. Sustituya $YOUR_CLUSTER_NAME por el nombre que desee que aparezca para su clúster en los paneles de Application Signals.

helm repo add aws-observability https://aws-observability.github.io/helm-charts helm install amazon-cloudwatch-operator aws-observability/amazon-cloudwatch-observability \ --namespace amazon-cloudwatch --create-namespace \ --set region=$REGION \ --set clusterName=$YOUR_CLUSTER_NAME

Para obtener más información, consulte amazon-cloudwatch-observability en GitHub.

Paso 3: configurar las credenciales de AWS para los clústeres de Kubernetes

importante

Si el clúster de Kubernetes está alojado en Amazon EC2, puede omitir esta sección y pasar a Paso 4: agregar anotaciones.

Si su clúster de Kubernetes está alojado en las instalaciones, debe seguir las instrucciones de esta sección para agregar credenciales de AWS a su entorno de Kubernetes.

Configuración de los permisos de un clúster de Kubernetes en las instalaciones
  1. Cree el usuario de IAM que se utilizará para conceder los permisos a su host en las instalaciones:

    1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

    2. Seleccione Usuarios, Crear nuevos usuarios.

    3. En Detalles del usuario, en Nombre de usuario, introduzca un nombre para el nuevo usuario de IAM. Este es su nombre de inicio de sesión de AWS y lo utilizará para autenticar su host. A continuación, elija Siguiente

    4. En la página Establecer permisos, en Opciones de permisos, seleccione Adjuntar políticas directamente.

    5. En la lista de Políticas de permisos, seleccione la política CloudWatchAgentServerPolicy para agregarla a su usuario. A continuación, elija Next.

    6. En la página Revisar y crear, asegúrese de que esté satisfecho con el nombre de usuario y de que la política CloudWatchAgentServerPolicy aparezca en Resumen de permisos.

    7. Seleccione la opción Crear usuario.

  2. Cree y recupere su clave de acceso y su clave secreta de AWS:

    1. En el panel de navegación de la consola de IAM, seleccione Usuarios y, a continuación, seleccione el nombre de usuario que creó en el paso anterior.

    2. En la página del usuario, seleccione la pestaña Credenciales de seguridad. A continuación, en la sección Claves de acceso, seleccione Crear clave de acceso.

    3. En el paso 1 de Crear clave de acceso, elija Interfaz de línea de comandos (CLI).

    4. En el Paso 2 de Crear clave de acceso, como opción, introduzca una etiqueta y seleccione Siguiente.

    5. En el Paso 3 de Crear clave de acceso, seleccione Descargar archivo .csv para guardar un archivo .cvs con la clave de acceso y la clave de acceso secreta de su usuario de IAM. Necesita esta información para los siguientes pasos.

    6. Seleccione Listo.

  3. Introduzca el siguiente comando para configurar sus credenciales de AWS en su host en las instalaciones. Sustituya ACCESS_KEY_ID y SECRET_ACCESS_ID por la clave de acceso y la clave de acceso secreta que generó recién y que se encuentran en archivo .csv que descargó en el paso anterior. De forma predeterminada, el archivo de credenciales se guarda en /home/user/.aws/credentials.

    $ aws configure --profile AmazonCloudWatchAgent AWS Access Key ID [None]: ACCESS_KEY_ID AWS Secret Access Key [None]: SECRET_ACCESS_ID Default region name [None]: MY_REGION Default output format [None]: json
  4. Edite el recurso personalizado que el agente de CloudWatch instaló con el gráfico de Helm para agregar las credenciales secretas de AWS recién creadas.

    kubectl edit amazoncloudwatchagent cloudwatch-agent -n amazon-cloudwatch
  5. Mientras el editor de archivos esté abierto, monte las credenciales de AWS en el contenedor de agentes de CloudWatch y agregue la siguiente configuración en la parte superior de la implementación. Sustituya la ruta /home/user/.aws/credentials por la ubicación del archivo de credenciales de AWS local.

    apiVersion: cloudwatch.aws.amazon.com/v1alpha1 kind: AmazonCloudWatchAgent metadata: name: cloudwatch-agent namespace: amazon-cloudwatch spec: volumeMounts: - mountPath: /rootfs volumeMounts: - name: aws-credentials mountPath: /root/.aws readOnly: true volumes: - hostPath: path: /home/user/.aws/credentials name: aws-credentials ---

Paso 4: agregar anotaciones

El siguiente paso consiste en instrumentar su aplicación para CloudWatch Application Signals al agregar una anotación específica del idioma a la carga de trabajo o al espacio de nombres de Kubernetes. Esta anotación instrumenta automáticamente la aplicación para enviar métricas, seguimientos y registros a Application Signals.

Adición de anotaciones para Application Signals
  1. Dispone de dos opciones para realizar la anotación:

    • Annotate Workload instrumenta automáticamente una sola carga de trabajo en un clúster.

    • Anotar el espacio de nombres instrumenta automáticamente todas las cargas de trabajo desplegadas en el espacio de nombres seleccionado.

    Seleccione una de esas opciones y siga los pasos correspondientes.

  2. Para anotar una sola carga de trabajo, introduzca uno de los siguientes comandos. Sustituya $WORKLOAD_TYPE y $WORKLOAD_NAME por los valores reales de la carga de trabajo.

    • Para cargas de trabajo de Java:

      kubectl patch $WORKLOAD_TYPE $WORKLOAD_NAME -p '{"spec": {"template": {"metadata": {"annotations": {"instrumentation.opentelemetry.io/inject-java": "true"}}}}}'
    • Para cargas de trabajo de Python:

      kubectl patch $WORKLOAD_TYPE $WORKLOAD_NAME -p '{"spec": {"template": {"metadata": {"annotations": {"instrumentation.opentelemetry.io/inject-python": "true"}}}}}'

      Para las aplicaciones Python, se requieren configuraciones adicionales. Para obtener más información, consulte La aplicación Python no se inicia después de activar Application Signals.

    • Para cargas de trabajo .NET:

      kubectl patch $WORKLOAD_TYPE $WORKLOAD_NAME -p '{"spec": {"template": {"metadata": {"annotations": {"instrumentation.opentelemetry.io/inject-dotnet": "true"}}}}}'

      Para las cargas de trabajo .NET en un espacio de nombres:

      kubectl annotate ns $NAMESPACE instrumentation.opentelemetry.io/inject-dotnet=true
  3. Para anotar todas las cargas de trabajo en un espacio de nombres, ingrese uno de los siguientes comandos. Reemplace $NAMESPACE por el nombre del espacio de nombres.

    Si el espacio de nombres incluye cargas de trabajo de Java y Python, agregue ambas anotaciones al espacio de nombres.

    • Para las cargas de trabajo de Java en el espacio de nombres:

      kubectl annotate ns $NAMESPACE instrumentation.opentelemetry.io/inject-java=true
    • Para las cargas de trabajo de Python en el espacio de nombres:

      kubectl annotate ns $NAMESPACE instrumentation.opentelemetry.io/inject-python=true

      Para las aplicaciones Python, se requieren configuraciones adicionales. Para obtener más información, consulte La aplicación Python no se inicia después de activar Application Signals.

    Una vez que agregue las anotaciones, reinicie todos los pods del espacio de nombres al ingresar el siguiente comando:

    kubectl rollout restart
  4. Una vez completados los pasos anteriores, en la consola de CloudWatch, seleccione Application Signals, Servicios. Esto abre los paneles de control en los que puede ver los datos que recopila Application Signals. Es posible que se tarde unos minutos en mostrar los datos.

    Para obtener más información sobre la vista de los Servicios, consulte Monitoreo del estado operativo de sus aplicaciones con Application Signals.