MÉTRICAS
...
Monitoramento Kubernetes
Monitoramento de Cluster
8 min
pré requisitos cluster kubernetes em execução 1\ criação do namespace e recursos necessários o arquivo telegraf setup yaml configura o namespace, serviceaccount, clusterrole, e secret necessários para a execução do telegraf com as permissões adequadas yaml apiversion v1 kind namespace metadata name telegraf \ apiversion v1 kind serviceaccount metadata name telegraf serviceaccount namespace telegraf \ kind clusterrole apiversion rbac authorization k8s io/v1 metadata name telegraf labels app telegraf rules \ apigroups \ " " resources \ " " verbs \ " " \ nonresourceurls \ " " verbs \ " " \ apiversion rbac authorization k8s io/v1 kind clusterrolebinding metadata name telegraf roleref apigroup rbac authorization k8s io kind clusterrole name telegraf subjects \ kind serviceaccount name telegraf serviceaccount namespace telegraf \ apiversion v1 kind secret metadata name telegraf serviceaccount token namespace telegraf annotations kubernetes io/service account name telegraf serviceaccount type kubernetes io/service account token caso queira alterar as permissões para somente leitura, ou para somente o monitoramento de pods use dessa forma apiversion rbac authorization k8s io/v1 kind clusterrole metadata annotations rbac authorization kubernetes io/autoupdate "true" labels kubernetes io/bootstrapping rbac defaults name cluster admin rules \ apigroups \ " " resources \["pods"] verbs \ " " \ nonresourceurls \ " " verbs \["get", "list", "watch"] o uso da regra em "resources" para monitorar apenas os pods não permite o monitoramento do cluster inteiro impedindo assim, o uso do plugin kubernetes da documentação "monitoramento de recursos de pods" para obter o token necessário para a configuração, utilize o seguinte comando bash kubectl get secret telegraf serviceaccount token n telegraf o jsonpath='{ data token}' | base64 decode 2\ configuração do telegraf o arquivo telegraf yaml contém a configuração do configmap usado pelo daemonset para configurar o telegraf yaml apiversion v1 kind configmap metadata name telegraf config namespace telegraf data telegraf conf | \[\[outputs influxdb]] urls = \["http //\<ip db worker> 8086"] database = "metrics" \[\[inputs kubernetes]] url = "" bearer token string = "\<token>" insecure skip verify = true \[\[inputs cpu]] \[\[inputs mem]] \[\[inputs disk]] \[global tags] ci ref id = "\<ci ref id>" database = "itsmx" cluster = "cliente" o campo url deve ser mantido vazio para que o daemonset colete as metricas de todos os nodes no cluster se precisar coletar metricas de apenas um node específico, preencher com o ip do node desejado no campo url entre as aspas outputs define o destino das métricas como o influxdb inputs configura os plugins para coletar métricas de kubernetes, cpu, memória e disco global tags define tags globais para identificar as métricas substitua os valores \<ip db worker> , \<token> , e \<ci ref id> pelos valores apropriados para o seu ambiente 3\ configuração do daemonset o arquivo telegraf daemonset yaml configura o daemonset para garantir que o telegraf seja executado em todos os nós do cluster yaml apiversion apps/v1 kind daemonset metadata name telegraf daemonset namespace telegraf spec selector matchlabels app telegraf template metadata labels app telegraf spec serviceaccountname telegraf serviceaccount containers \ name telegraf image telegraf\ latest volumemounts \ name config volume mountpath /etc/telegraf/telegraf conf subpath telegraf conf volumes \ name config volume configmap name telegraf config daemonset garante que uma instância do telegraf seja executada em cada nó volumes monta o configmap telegraf config no container 4\ verificação da instalação certifique se de que os pods do telegraf estão em execução e verifique os logs do pod do daemonset para garantir que o telegraf está coletando métricas corretamente bash kubectl logs n telegraf l app=telegraf

