Personalización de agentes de supervisión de Kubernetes
En IBM Cloud Monitoring, puede personalizar la configuración de un agente de supervisión para establecer un nivel de registro, bloquear puertos, incluir o excluir datos de métricas, añadir o eliminar sucesos y filtrar contenedores.
Para personalizar un agente de supervisión de Kubernetes, tiene que configurar el archivo sysdig-agent-configmap.yaml.
Puede utilizar uno de estos dos métodos para modificar un archivo de configuración:
- Método 1: modificar el archivo directamente en el clúster en el que se ejecuta el agente.
- Método 2: modificar el archivo localmente y aplicar los cambios en el clúster.
Edición de la configuración del agente de supervisión de Kubernetes mediante kubectl edit
Siga los pasos siguientes para editar una configuración de agente de supervisión de Kubernetes:
-
Configure el entorno de clúster. Ejecute los mandatos siguientes:
En primer lugar, obtenga el mandato para establecer la variable de entorno y descargar los archivos de configuración de Kubernetes.
ibmcloud ks cluster config --cluster <cluster_name_or_ID> -
Edite el archivo sysdig-agent-configmap.yaml.
Ejecute el siguiente mandato:
kubectl edit configmap sysdig-agent -n ibm-observeRealice los cambios. Nota: consulte las instrucciones del editor
vipara obtener información sobre cómo realizar cambios.Guarde los cambios. Los cambios se aplican automáticamente.
Edición de la configuración del agente de supervisión de Kubernetes mediante kubectl apply
Utilice este método si tiene los archivos de yaml de configuración almacenados y gestionados en un sistema de control de origen.
Siga los pasos siguientes para editar una configuración de agente de supervisión de Kubernetes:
-
Obtenga la copia más reciente de cada archivo del controlador de origen.
Para crear un archivo local con la configuración que se despliega en un clúster, también puede ejecutar el mandato:
kubectl get configmap sysdig-agent -n=ibm-observe -o=yaml > prod-sysdig-agent-configmap.yaml -
Edite la configuración.
-
Aplique los cambios con los mandatos siguientes:
kubectl apply -f sysdig-agent-configmap.yaml
Los agentes en ejecución adoptarán automáticamente la nueva configuración después de que Kubernetes envíe los cambios a todos los nodos del clúster.
Recopilación de un conjunto de sucesos de Kubernetes
Monitoring admite integraciones de eventos conKubernetes.Monitoring Los agentes descubren automáticamente estos servicios y recopilan datos de eventos de ellos. Puede editar el archivo de configuración del agente para cambiar su comportamiento predeterminado e incluir o excluir datos de sucesos.
De forma predeterminada, solo se recopila un conjunto limitado de sucesos. Para más información sobre los eventos que se recogen por defecto, consulte Tipos de eventos.
Para añadir o eliminar sucesos, debe personalizar el archivo sysdig-agent-configmap.yaml y especificar qué sucesos se deben incluir y cuáles se van a filtrar. Nota: una entrada en una sección de sysdig-agent-configmap.yaml prevalece sobre toda la sección de la configuración predeterminada.
Para filtrar los sucesos de las pods de Kubernetes, siga los pasos siguientes:
-
Configure el entorno de clúster. Ejecute los mandatos siguientes:
En primer lugar, obtenga el mandato para establecer la variable de entorno y descargar los archivos de configuración de Kubernetes.
ibmcloud ks cluster config --cluster <cluster_name_or_ID> -
Edite el archivo sysdig-agent-configmap.yaml.
Ejecute el siguiente mandato:
kubectl edit configmap sysdig-agent -n ibm-observe -
Realice los cambios. Añada la sección events o actualice la sección.
Nota: consulte las instrucciones del editor
vipara obtener información sobre cómo realizar cambios.Por ejemplo, quizás desee recopilar los sucesos de extracción de pod de Kubernetes y filtrar otros sucesos de pod que se recopilan de forma predeterminada. Pero desea recopilar los sucesos predeterminados de Kubernetes para los nodos y replicationControllers.
events: kubernetes: pod: - Pulling -
Guarde los cambios.
Los cambios se aplican automáticamente.
Otro ejemplo en el que puede ver cómo recopilar un subconjunto de sucesos de Kubernetes: supongamos que solo desea supervisar los sucesos de extracción, los extraídos y los anómalos de los pods.
-
Opción 1: defina la secuencia de entradas como una lista:
events: kubernetes: pod: - Pulling - Pulled - Failed -
Opción 2: defina la secuencia de entradas en una sola línea entre corchetes:
events: kubernetes: pod: [Pulling, Pulled, Failed]
Para obtener más información sobre cómo trabajar con sucesos personalizados, consulte Sucesos personalizados.
Inhabilitación de la recopilación de sucesos
Para hacer que un agente de supervisor deje de recopilar sucesos de Kubernetes, debe modificar el archivo sysdig-agent-configmap.yaml. Establezca la entrada Kubernetes de la sección events en none.
Complete los pasossiguientes:
-
Configure el entorno de clúster. Ejecute los mandatos siguientes:
En primer lugar, obtenga el mandato para establecer la variable de entorno y descargar los archivos de configuración de Kubernetes.
ibmcloud ks cluster config --cluster <cluster_name_or_ID> -
Edite el archivo sysdig-agent-configmap.yaml.
Ejecute el siguiente mandato:
kubectl edit configmap sysdig-agent -n ibm-observe -
Realice los cambios. Añada la sección events o actualice la sección.
events: kubernetes: none -
Guarde los cambios.
Los cambios se aplican automáticamente.
Inclusión y exclusión de métricas
Para filtrar métricas personalizadas, debe personalizar la sección metrics_filter en el archivo sysdig-agent-configmap.yaml. Puede especificar las métricas que se deben incluir y las que se deben filtrar configurando los parámetros de filtro include y exclude.
El orden de la regla de filtrado se establece de la forma siguiente: se aplica la primera regla que coincide con una métrica. Las siguientes reglas para esa métrica se pasan por alto.
Complete los pasossiguientes:
-
Configure el entorno de clúster. Ejecute los mandatos siguientes:
En primer lugar, obtenga el mandato para establecer la variable de entorno y descargar los archivos de configuración de Kubernetes.
ibmcloud ks cluster config --cluster <cluster_name_or_ID> -
Edite el archivo sysdig-agent-configmap.yaml.
Ejecute el siguiente mandato:
kubectl edit configmap sysdig-agent -n ibm-observe -
Realice los cambios. Añada la sección metrics_filter o actualice la sección.
Por ejemplo, si la sección metrics_filter de un agente de supervisión tiene el aspecto siguiente:
metrics_filter: - include: metricA.* - exclude: metricA.* - include: metricB.* - include: haproxy.backend.* - exclude: haproxy.* - exclude: metricC.*-
Está configurando el agente de supervisión para que recopile todos los datos de métricas que empiezan por metricA, metricB y haproxy.backend.
-
Está filtrando las métricas que empiezan por metricC y otras métricas que empiezan por haproxy.
-
La entrada
exclude: metricA.*se pasa por alto.
-
-
Guarde los cambios.
Los cambios se aplican automáticamente.
Filtrado de objetos de kubernetes y contenedores de los que se recopilan los datos
Un agente de supervisión de Kubernetes recopila automáticamente métricas de todos los contenedores que detecta en un clúster, lo que incluye Prometheus, StatsD, JMX, comprobaciones de apps y métricas incorporadas.
Puede personalizar el agente de supervisión para que excluya contenedores de la recopilación de métricas.
Cuando excluya contenedores, tenga en cuenta la información siguiente:
- Se reduce la carga del agente y del programa de fondo.
- Solo se recopilan datos de los contenedores que desea supervisar.
- Puede controlar los costes informando sobre contenedores importantes y filtrando los contenedores innecesarios o no críticos.
Para habilitar la característica en la que un agente de supervisión filtra contenedores, debe personalizar el archivo sysdig-agent-configmap.yaml. Establezca la entrada use_container_filter de la sección containers en true. Nota: de forma predeterminada, esta característica está desactivada. A continuación, defina las reglas que incluyan una o varias condiciones y que desee aplicar.
En la tabla siguiente se describen los parámetros que puede definir para establecer las reglas de filtrado en un clúster:
| Parámetro | Condición |
|---|---|
container.image |
Nombre de imagen de contenedor |
container.name |
Nombre de contenedor |
container.label.* |
Etiqueta de contenedor |
kubernetes.object.* |
Objeto de Kubernetes. Un objeto puede ser un pod, un espacio de nombres, etc. |
kubernetes.object.annotation.* |
Anotación de objeto de Kubernetes |
kubernetes.object.label.* |
Etiqueta de objeto de Kubernetes |
all |
Regla predeterminada para especificar todos los objetos |
Tenga en cuenta la información siguiente sobre cómo el agente de supervisión aplica las reglas que defina en la sección container_filter:
- Las condiciones se definen configurándolas con los parámetros de filtro include y exclude.
- La primera regla coincidente de la lista determina si el contenedor se incluye o se excluye.
- Las condiciones constan de un nombre de clave y un valor. Si la clave especificada para un contenedor coincide con el valor, la regla se aplica.
- Cuando una regla contiene varias condiciones, deben coincidir
all the conditionspara que la regla se aplique.
Siga los pasos siguientes para filtrar los contenedores que un agente de supervisión supervisa en un clúster:
-
Configure el entorno de clúster. Ejecute los mandatos siguientes:
En primer lugar, obtenga el mandato para establecer la variable de entorno y descargar los archivos de configuración de Kubernetes.
ibmcloud ks cluster config --cluster <cluster_name_or_ID> -
Edite el archivo sysdig-agent-configmap.yaml.
Ejecute el siguiente mandato:
kubectl edit configmap sysdig-agent -n ibm-observe -
Realice los cambios. Añada la entrada use_container_filter y la sección container_filter o actualice las entradas existentes.
Por ejemplo, consulte el siguiente extracto de una correlación de configuración:
# Enable the feature use_container_filter: true # # Include or exclude conditions container_filter: - include: container.image: appdomain/my-app-image - include: container.name: my-java-app - exclude: kubernetes.namespace.name: kube-system -
Guarde los cambios.
Los cambios se aplican automáticamente.
Bloqueo de puertos
Para bloquear el tráfico de red y las métricas procedentes de los puertos de red, debe personalizar la sección blacklisted_ports en el archivo sysdig-agent-configmap.yaml. Debe obtener una lista de los puertos de los que desea filtrar los datos.
El puerto 53 (DNS) siempre está en la lista de elementos bloqueados y no es necesario especificarlo en blacklisted_ports.
Complete los pasossiguientes:
-
Configure el entorno de clúster. Ejecute los mandatos siguientes:
En primer lugar, obtenga el mandato para establecer la variable de entorno y descargar los archivos de configuración de Kubernetes.
ibmcloud ks cluster config --cluster <cluster_name_or_ID> -
Edite el archivo sysdig-agent-configmap.yaml.
Ejecute el siguiente mandato:
kubectl edit configmap sysdig-agent -n ibm-observe -
Realice los cambios. Añada la sección metrics_filter o actualice la sección.
Por ejemplo, en el ejemplo siguiente se muestra cómo establecer la sección blacklisted_ports de un agente de supervisión para excluir datos procedentes de los puertos 6666 y 6379:
blacklisted_ports: - 6666 - 6379 -
Guarde los cambios.
Los cambios se aplican automáticamente.
Cambio de las configuraciones de registro
Para configurar las configuraciones de registro, debe personalizar la sección log del archivo sysdig-agent-configmap.yaml.
El agente de supervisión genera entradas de registro en /opt/draios/logs/draios.log.
- El archivo de registro rota cuando alcanza los 10 MB de tamaño.
- Se conservan los 10 archivos de registro más recientes. La indicación de fecha y fecha que se añade al nombre de archivo se utiliza para determinar qué archivos se deben conservar.
En la tabla siguiente se muestran algunos casos de ejemplo comunes y el valor que debe establecer en cada uno de ellos:
| Casos de uso | Entrada en la sección log | Valor predeterminado |
|---|---|---|
| Resolución de problemas del comportamiento del agente | file_priority: debug |
info |
| Reducción de la salida de la consola del contenedor | console_priority: warning |
info |
| Filtrado de sucesos según su gravedad | event_priority: warning |
information |
| Verificación de las métricas que se incluyen o se excluyen | metrics_excess_log: true |
false |
Cambio del nivel de registro
- La file_priority de la sección log controla el tipo de entradas de registro escritas en el archivo
/opt/draios/logs/draios.log. - La console_priority de la sección log controla el tipo de entradas de registro escritas en la salida de la consola del contenedor cuando se ejecuta el agente contenerizado.
- El nivel de registro predeterminado es info, donde se crea una entrada de registro para cada transmisión de métricas agregada a los servidores de fondo, una vez por segundo, además de las entradas correspondientes a avisos y errores.
- Los niveles de registro válidos son: none, error, warning, info, debug y trace
Filtrado de sucesos de Kubernetes por gravedad
- La event_priority de la sección log controla el tipo de sucesos que se envían desde el agente
- El nivel de registro predeterminado es information. Esto significa que solo se transmite la información y los sucesos de gravedad superior.
- Los valores válidos son: emergency, alert, critical, error, warning, notice, information, debug y none. Nota: los valores se muestran de prioridad más alta a prioridad más baja.
- Si se establece el nivel en
none, se bloqueará toda la recopilación de sucesos.
Registro en un archivo de las métricas que se incluyen o se excluyen
-
Si se establece metrics_excess_log en true en la sección log, se habilitará el registro de las métricas personalizadas que se incluyen o se excluyen.
-
El registro de métricas está desactivado de forma predeterminada.
-
El registro se produce en el nivel INFO cada 30 segundos y se prolonga durante 10 segundos.
-
El valor metricsfile es necesario para especificar la ubicación de las métricas que va a escribir el agente. El valor
metricsfile.locationes una vía de acceso relativa bajo el directorio /opt/draios. Nota: la entradametricsfilese especifica al mismo nivel quelog(no como un hijo en yaml). -
Los datos de registro se formatean de la forma siguiente:
+/-[type] [metric included/excluded]: metric.name (filter: +/-[metric.filter])-
+/- es un símbolo que indica si la métrica se incluye o se excluye. El signo más (+) indica que una métrica se incluye. El signo menos (-) indica que una métrica se excluye.
-
[type] especifica el tipo de métrica, por ejemplo, statsd.
-
[métrica incluida/excluida] indica de forma legible si la métrica está incluida o excluida.
-
metric.name indica el nombre de la métrica.
-
(filter: +/-metric[metric.filter]) proporciona información sobre cualquier filtro definido en la sección metrics_filter del archivo sysdig-agent-configmap.yaml.
-
A continuación se muestra un ejemplo de entrada de registro:
-[statsd] metric excluded: mongo.statsd.vsize (filter: -[mongo.statsd.*])
+[statsd] metric included: mongo.statsd.netIn (filter: +[mongo.statsd.net*])
Siga los pasos siguientes para configurar los valores de registro:
-
Configure el entorno de clúster. Ejecute los mandatos siguientes:
En primer lugar, obtenga el mandato para establecer la variable de entorno y descargar los archivos de configuración de Kubernetes.
ibmcloud ks cluster config --cluster <cluster_name_or_ID> -
Edite el archivo sysdig-agent-configmap.yaml.
Ejecute el siguiente mandato:
kubectl edit configmap sysdig-agent -n ibm-observe -
Realice los cambios. Añada la sección log o actualice la sección e incluya las configuraciones que desee modificar en función de las descripciones anteriores.
Por ejemplo:
log: file_priority: warning console_priority: info event_priority: warning metrics_excess_log: true metricsfile: { location : metrics } -
Guarde los cambios.
Los cambios se aplican automáticamente.
Archivo yaml de configmap de ejemplo
apiVersion: v1
data:
dragent.yaml: |
### Agent tags
# tags: linux:ubuntu,dept:dev,local:nyc
####
# collector address
# collector: 192.168.1.1
# Collector TCP port
# collector_port: 6666
# Whether collector accepts ssl
# ssl: true
# collector certificate validation
# ssl_verify_certificate: true
#######################################
#
k8s_cluster_name: cluster12
collector: ingest.us-south.monitoring.cloud.ibm.com
collector_port: 6443
ssl: true
ssl_verify_certificate: true
sysdig_capture_enabled: false
new_k8s: true
tags: type:mycluster,region:us-south
blacklisted_ports:
- 6666
- 6379
events:
kubernetes:
node:
- Rebooted
metrics_filter:
- include: metricA.*
- exclude: metricA.*
- include: metricB.*
use_container_filter: true
container_filter:
- exclude:
kubernetes.namespace.name: kube-system
log:
file_priority: warning
console_priority: info
event_priority: warning
metrics_excess_log: true
metricsfile: { location : metrics }
kind: ConfigMap
metadata:
annotations:
...