Customizando agentes de monitoramento do Kubernetes
No IBM Cloud Monitoring, é possível customizar a configuração do agente de monitoramento para definir um nível de log, bloquear portas, incluir ou excluir dados de métrica e eventos e filtrar contêineres.
Para customizar um agente de monitoramento do Kubernetes, é necessário configurar o arquivo sysdig-agent-configmap.yaml.
Há dois métodos que podem ser usados para modificar um arquivo de configuração:
- Método 1: modificar o arquivo diretamente no cluster no qual o agente está em execução.
- Método 2: modificar o arquivo localmente e aplicar as mudanças ao cluster.
Editando a configuração do agente de monitoramento do Kubernetes usando kubectl edit
Conclua as seguintes etapas para editar uma configuração do agente de monitoramento do Kubernetes:
-
Configure o ambiente em cluster. Execute os seguintes comandos:
Primeiro, obtenha o comando para configurar a variável de ambiente e faça download dos arquivos de configuração do Kubernetes.
ibmcloud ks cluster config --cluster <cluster_name_or_ID> -
Edite o arquivo sysdig-agent-configmap.yaml.
Execute o comando a seguir:
kubectl edit configmap sysdig-agent -n ibm-observeFaça mudanças. Nota: consulte as instruções do editor
vipara saber como fazer mudanças.Salve as mudanças. As mudanças são aplicadas automaticamente.
Editando a configuração do agente de monitoramento do Kubernetes usando kubectl apply
Use esse método se você tiver os arquivos yaml de configuração armazenados e gerenciados em um sistema de controle de origem.
Conclua as seguintes etapas para editar uma configuração do agente de monitoramento do Kubernetes:
-
Obtenha a cópia mais recente de cada arquivo do controlador de origem.
Para criar um arquivo local com a configuração que está implementada em um cluster, é possível também executar o comando:
kubectl get configmap sysdig-agent -n=ibm-observe -o=yaml > prod-sysdig-agent-configmap.yaml -
Edite a configuração.
-
Aplique as mudanças usando os comandos a seguir:
kubectl apply -f sysdig-agent-configmap.yaml
Os agentes em execução selecionarão automaticamente a nova configuração após o Kubernetes enviar por push as mudanças em todos os nós no cluster.
Coletando um conjunto de eventos do Kubernetes
O Monitoring suporta integrações de eventos com Kubernetes. Os agentes Monitoring descobrem automaticamente esses serviços e coletam dados de eventos deles. É possível editar o arquivo de configuração do agente para mudar seu comportamento padrão e incluir ou excluir dados do evento.
Por padrão, somente um conjunto limitado de eventos é coletado. Para obter mais informações sobre os eventos que são coletados por padrão, consulte Tipos de eventos.
Para incluir ou remover eventos, deve-se customizar o arquivo sysdig-agent-configmap.yaml e especificar quais eventos incluir e quais filtrar. Nota: uma entrada em uma seção no sysdig-agent-configmap.yaml substitui a seção inteira na configuração padrão.
Para filtrar eventos de pods do Kubernetes, conclua as etapas a seguir:
-
Configure o ambiente em cluster. Execute os seguintes comandos:
Primeiro, obtenha o comando para configurar a variável de ambiente e faça download dos arquivos de configuração do Kubernetes.
ibmcloud ks cluster config --cluster <cluster_name_or_ID> -
Edite o arquivo sysdig-agent-configmap.yaml.
Execute o comando a seguir:
kubectl edit configmap sysdig-agent -n ibm-observe -
Faça mudanças. Inclua a seção de eventos ou atualize a seção.
Nota: consulte as instruções do editor
vipara saber como fazer mudanças.Por exemplo, você pode desejar coletar eventos de pulling do pod do Kubernetes e filtrar outros eventos de pod que são coletados por padrão. Você deseja ainda coletar eventos padrão do Kubernetes para os nós e os replicationControllers.
events: kubernetes: pod: - Pulling -
Salve as mudanças.
As mudanças são aplicadas automaticamente.
Outro exemplo no qual é possível ver como coletar um subconjunto de eventos do Kubernetes: você deseja monitorar somente eventos de pulling, pulled e failed para os pods.
-
Opção 1: definir a sequência em entradas como uma lista com marcadores:
events: kubernetes: pod: - Pulling - Pulled - Failed -
Opção 2: definir a sequência em entradas em uma única linha entre colchetes:
events: kubernetes: pod: [Pulling, Pulled, Failed]
Para obter mais informações sobre como trabalhar com eventos customizados, consulte Eventos customizados.
Desativando a coleta de eventos
Para desativar um agente de monitoramento da coleta de eventos do Kubernetes, deve-se modificar o arquivo sysdig-agent-configmap.yaml. Configure a entrada Kubernetes na seção events como none.
Conclua as etapas a seguir:
-
Configure o ambiente em cluster. Execute os seguintes comandos:
Primeiro, obtenha o comando para configurar a variável de ambiente e faça download dos arquivos de configuração do Kubernetes.
ibmcloud ks cluster config --cluster <cluster_name_or_ID> -
Edite o arquivo sysdig-agent-configmap.yaml.
Execute o comando a seguir:
kubectl edit configmap sysdig-agent -n ibm-observe -
Faça mudanças. Inclua a seção de eventos ou atualize a seção.
events: kubernetes: none -
Salve as mudanças.
As mudanças são aplicadas automaticamente.
Incluindo e excluindo métricas
Para filtrar as métricas customizadas, deve-se customizar a seção metrics_filter no arquivo sysdig-agent-configmap.yaml. É possível especificar quais métricas incluir e quais filtrar, configurando os parâmetros de filtragem include e exclude.
A ordem de regra de filtragem é configurada conforme a seguir: a primeira regra que corresponde a uma métrica é aplicada. As regras de acompanhamento para essa métrica são ignoradas.
Conclua as etapas a seguir:
-
Configure o ambiente em cluster. Execute os seguintes comandos:
Primeiro, obtenha o comando para configurar a variável de ambiente e faça download dos arquivos de configuração do Kubernetes.
ibmcloud ks cluster config --cluster <cluster_name_or_ID> -
Edite o arquivo sysdig-agent-configmap.yaml.
Execute o comando a seguir:
kubectl edit configmap sysdig-agent -n ibm-observe -
Faça mudanças. Inclua a seção de metrics_filter ou atualize a seção.
Por exemplo, se a seção metrics_filter de um agente de monitoramento for semelhante ao seguinte:
metrics_filter: - include: metricA.* - exclude: metricA.* - include: metricB.* - include: haproxy.backend.* - exclude: haproxy.* - exclude: metricC.*-
Você está configurando o agente de monitoramento para coletar todos os dados das métricas que começam com metricA, metricB e haproxy.backend.
-
Você está filtrando métricas iniciadas com metricC e outras métricas iniciadas com haproxy.
-
A entrada
exclude: metricA.*é ignorada.
-
-
Salve as mudanças.
As mudanças são aplicadas automaticamente.
Filtrando objetos e contêineres do Kubernetes dos quais os dados são coletados
Um agente de monitoramento do Kubernetes coleta automaticamente métricas de todos os contêineres que ele detecta em um cluster, incluindo métricas Prometheus, StatsD, JMX, verificações de app e integradas.
É possível customizar o agente de monitoramento para excluir contêineres da coleta de métricas.
Ao excluir contêineres, considere as informações a seguir:
- Você reduz o agente e o carregamento de backend.
- Você só coleta dados de contêineres que deseja monitorar.
- É possível controlar custos relatando contêineres importantes e filtrando contêineres desnecessários ou não críticos.
Para ativar o recurso no qual um agente de monitoramento filtra contêineres, deve-se customizar o arquivo sysdig-agent-configmap.yaml. Configure a entrada use_container_filter na seção containers como true. Nota: por padrão, esse recurso está desativado. Em seguida, defina as regras que incluem uma ou mais condições e que você deseja aplicar.
A tabela a seguir descreve os parâmetros que podem ser definidos para configurar as regras de filtragem em um cluster:
| Parâmetro | Condição |
|---|---|
container.image |
Nome da imagem do contêiner |
container.name |
Nome do contêiner |
container.label.* |
Rótulo do contêiner |
kubernetes.object.* |
Objeto Kubernetes. Um objeto pode ser um pod, um namespace, etc. |
kubernetes.object.annotation.* |
Anotação de objeto do Kubernetes |
kubernetes.object.label.* |
Rótulo do objeto Kubernetes |
all |
Regra padrão para especificar todos os objetos |
Considere as seguintes informações sobre como o agente de monitoramento aplica as regras definidas na seção container_filter:
- Você define condições configurando-os com os parâmetros de filtragem include e exclude.
- A primeira regra de correspondência na lista determina se o contêiner está incluído ou excluído.
- As condições consistem em um nome de chave e um valor. Se a chave fornecida para um contêiner corresponder ao valor, a regra será aplicada.
- Quando uma regra contém múltiplas condições,
all the conditionsprecisam corresponder para que a regra seja aplicada.
Conclua as seguintes etapas para filtrar contêineres que são monitorados por um agente de monitoramento em um cluster:
-
Configure o ambiente em cluster. Execute os seguintes comandos:
Primeiro, obtenha o comando para configurar a variável de ambiente e faça download dos arquivos de configuração do Kubernetes.
ibmcloud ks cluster config --cluster <cluster_name_or_ID> -
Edite o arquivo sysdig-agent-configmap.yaml.
Execute o comando a seguir:
kubectl edit configmap sysdig-agent -n ibm-observe -
Faça mudanças. Inclua a entrada use_container_filter e a seção container_filter ou atualize as entradas existentes.
Por exemplo, consulte a extração a seguir de um mapa de configuração:
# 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 -
Salve as mudanças.
As mudanças são aplicadas automaticamente.
Bloqueando portas
Para bloquear o tráfego de rede e as métricas de portas de rede, deve-se customizar a seção blacklisted_ports no arquivo sysdig-agent-configmap.yaml. Deve-se listar as portas das quais você deseja filtrar quaisquer dados.
A Porta 53 (DNS) está sempre na lista de bloqueios e não precisa ser especificada no blacklisted_ports.
Conclua as etapas a seguir:
-
Configure o ambiente em cluster. Execute os seguintes comandos:
Primeiro, obtenha o comando para configurar a variável de ambiente e faça download dos arquivos de configuração do Kubernetes.
ibmcloud ks cluster config --cluster <cluster_name_or_ID> -
Edite o arquivo sysdig-agent-configmap.yaml.
Execute o comando a seguir:
kubectl edit configmap sysdig-agent -n ibm-observe -
Faça mudanças. Inclua a seção de metrics_filter ou atualize a seção.
Por exemplo, a amostra a seguir exibe como configurar a seção blacklisted_ports de um agente de monitoramento para excluir dados vindos das portas 6666 e 6379:
blacklisted_ports: - 6666 - 6379 -
Salve as mudanças.
As mudanças são aplicadas automaticamente.
Mudando as configurações de log
Para definir as configurações de log, deve-se customizar a seção log no arquivo sysdig-agent-configmap.yaml.
O agente de monitoramento gera entradas de log em /opt/draios/logs/draios.log.
- O arquivo de log gira ao atingir 10 MB de tamanho.
- Os 10 arquivos de log mais recentes são mantidos. O registro de data anexado ao nome do arquivo é usado para determinar quais arquivos manter.
A tabela a seguir lista alguns cenários comuns e o valor que deve ser configurado em cada um deles:
| Casos de uso | Entrada de seção de log | Valor padrão |
|---|---|---|
| Solucionar problemas de comportamento do agente | file_priority: debug |
info |
| Reduza a saída de console do contêiner | console_priority: warning |
info |
| Filtrando eventos por severidade | event_priority: warning |
information |
| Verifique quais métricas estão incluídas ou excluídas | metrics_excess_log: true |
false |
Mudando o nível de log
- O file_priority na seção log controla o tipo de entradas de log gravadas no arquivo
/opt/draios/logs/draios.log. - O console_priority na seção log controla o tipo de entradas de log gravadas na saída do console do contêiner ao executar o agente conteinerizado.
- O nível de log padrão é informações, em que uma entrada de log é criada para cada transmissão de métrica agregada nos servidores de back-end, uma vez por segundo, além de entradas para quaisquer avisos e erros.
- Os níveis de log válidos são: nenhum, erro, aviso, informações, depuração, rastreio
Filtrando eventos do Kubernetes por severidade
- O event_priority na seção log controla o tipo de eventos enviados do agente
- O nível de log padrão é informações. Isso significa que apenas informações e eventos de maior severidade são transmitidos.
- Os níveis válidos são: emergencial, alerta, crítico, erro, aviso, aviso, informações, depuração e nenhum. Nota: os valores são listados de alta prioridade para baixa prioridade.
- A configuração do nível para
nonebloqueará toda a coleção de eventos.
Registrando em um arquivo quais métricas estão incluídas ou excluídas
-
A configuração de metrics_excess_log para true na seção log ativará a criação de log das métricas customizadas incluídas ou excluídas.
-
A criação de log de métrica é desativada por padrão.
-
A criação de log ocorre no nível INFO a cada 30 segundos e permanece por 10 segundos.
-
A configuração metricsfile é necessária para especificar o local para que as métricas sejam gravadas pelo agente. O valor
metricsfile.locationé um caminho relativo sob o diretório /opt/draios. Nota: a entradametricsfileé especificada no mesmo nível delog(não como um filho no yaml) -
Os dados de criação de log são formatados conforme a seguir:
+/-[type] [metric included/excluded]: metric.name (filter: +/-[metric.filter])-
+/- é um símbolo que indica se a métrica está incluída ou excluída. Mais (+) indica que uma métrica está incluída. Menos (-) indica que uma métrica está excluída.
-
[type] especifica o tipo de métrica, por exemplo, statsd.
-
métrica [incluída/excluída] indica, de forma legível, se a métrica está incluída ou excluída.
-
- metric.name * indica o nome da métrica.
-
(filter: +/-metric[metric.filter]) fornece informações sobre quaisquer filtros definidos na seção metrics_filter do arquivo sysdig-agent-configmap.yaml.
-
A seguir, uma entrada de log de amostra:
-[statsd] metric excluded: mongo.statsd.vsize (filter: -[mongo.statsd.*])
+[statsd] metric included: mongo.statsd.netIn (filter: +[mongo.statsd.net*])
Conclua as etapas a seguir para definir as configurações de log:
-
Configure o ambiente em cluster. Execute os seguintes comandos:
Primeiro, obtenha o comando para configurar a variável de ambiente e faça download dos arquivos de configuração do Kubernetes.
ibmcloud ks cluster config --cluster <cluster_name_or_ID> -
Edite o arquivo sysdig-agent-configmap.yaml.
Execute o comando a seguir:
kubectl edit configmap sysdig-agent -n ibm-observe -
Faça mudanças. Inclua a seção de log ou atualize a seção e inclua as configurações que você deseja modificar com base nas descrições anteriores.
Por exemplo:
log: file_priority: warning console_priority: info event_priority: warning metrics_excess_log: true metricsfile: { location : metrics } -
Salve as mudanças.
As mudanças são aplicadas automaticamente.
Arquivo configmap yaml de amostra
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:
...