MÉTRICAS
Coletas customizadas

Monitoramento Kubernetes com Telegraf Operator

12min
configurando o monitoramento de um cluster kubernetes usando o telegraf operator pré requisitos cluster kubernetes em execução 1\ instalando o telegraf operator no seu cluster kubernetes e configurando o ambiente a versão atualizada do telegraf operator pode ser instalada usando o arquivo a seguir do influxdata verifique o link para configuração do telegraf operator faça o download e o deploy do arquivo a seguir https //archbee doc uploads s3 amazonaws com/2f rdyzz6lujb5dcak7q7 3yz3kk5fxn8zjjks8 ek 20240801 145332 yml o clusterrole cluster admin no clusterrolebinding em dev yml não pode ser alterado, pois se refere a um clusterrole padrão no kubernetes caso não exista o clusterrole cluster admin criar e fazer deploy de um cluster role usando o arquivo abaixo clusterrole yaml 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 \ " " verbs \ " " \ nonresourceurls \ " " verbs \ " " 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" configuração do ambiente 1\ configurar as classes telegraf o arquivo classes yml define as classes telegraf que serão usadas para reportar dados para o influxdb e para a saída padrão substitua < simon dbworker ip > (ceritifque se que seja o ip da instância db worker ), \<database> , \<hostname> e \<cluster> pelos valores desejados faça apenas os download do arquivo a seguir, não faça o deploy, ele precisará de ser alterado primeiro https //archbee doc uploads s3 amazonaws com/2f rdyzz6lujb5dcak7q7 gpbm mcf7r5x tj67fs4e 20240731 175319 yml exemplo de um arquivo classes yml classes yml apiversion v1 kind secret metadata name telegraf operator classes namespace telegraf operator stringdata \# basic classes that can be used to develop telegraf operator ; these classes \# report to influxdb v1 in same cluster as well as to stdout for convenience app |+ \[\[outputs influxdb]] urls = \["\<simon dbworker ip> 8086"] database = "metrics" \[global tags] ci ref id = "\<ci ref id>" hostname = "\<hostname>" \[\[outputs influxdb]] configuração do plugin de saída para enviar métricas ao influxdb urls o url do servidor influxdb onde as métricas serão enviadas substitua \<simon dbworker ip> pelo endereço ip ou hostname do seu servidor influxdb database o nome do banco de dados influxdb onde as métricas serão armazenadas username o nome de usuário para autenticação no influxdb password a senha para autenticação no influxdb skip database creation se true, impede o telegraf de tentar criar o banco de dados se ele não existir \[global tags] configuração de tags globais que serão adicionadas a todas as métricas coletadas pelo telegraf ci ref id identificador de referência de integração contínua o identificador do servidor pode ser localizada no detalhamento do ic na infraestrura caso o cluster seja virtual, é aconselhado utilizar o ci ref id do intelligence instance do simon hostname nome do host de onde as métricas estão sendo coletadas pelo valor real 2\ configurar uma coleta customizada para um plugin do telegraf coloque o campo annotations no arquivo yaml de um pod já existente, onde se deseja coletar metricas, para colocar um side car do telegraf no arquivo a seguir define em um statefulset, deployment ou pod já existente, o campo annotations, onde é preciso configurar um plugin que será monitorado pelo telegraf fora do escopo global, que foi configurado no classes yaml à cima essa configuração servirá para coletar a metricas de um pod exclusivo ou mais assim, evitando conflitos nas chamadas ou erros no envio de metricas globais (classes yaml) substitua os valores de name, namespace, servicename, app, inputs plugin nome , urls , limits cpu e limits memory pelos valores desejados verifique os possíveis plugins de input e configurações neste link o " telegraf influxdata com/class app " devera ser configurado de acordo com o nome da configuração no classes yaml na linha 9 como mostrado no item 1 exemplo de um arquivo redis yaml yml apiversion apps/v1 kind statefulset metadata name redis namespace telegraf operator spec selector matchlabels app redis servicename redis template metadata labels app redis annotations telegraf influxdata com/inputs |+ \[\[inputs redis]] servers = \["tcp\ //localhost 6379"] telegraf influxdata com/class app telegraf influxdata com/env fieldref namespace metadata namespace telegraf influxdata com/path /redis status # (exemplo de input) telegraf influxdata com/limits cpu '750m' \# limite de memoria invalida será ignorada telegraf influxdata com/limits memory '800x' spec containers \ name redis image redis\ alpine obs este yaml file podes ser usado também para verificar o container telegraf operator contido nesse pod usando o comando a seguir 3\ aplicar as configurações aplique as configurações usando o comando kubectl apply f \<arquivo yml> para cada um dos arquivos yaml deploy dos pods e contexto kubernetes certifique se de que o contexto correto do kubectl esteja definido e sendo utilizado, caso contrário, ira falhar bash kubectl config use context telegraf operator nome kubectl apply f dev yml kubectl apply f classes yml kubectl apply f plugin nome yml kubectl describe pod namespace=\<namespace> \<pod name> acesso aos logs do deploy bash kubectl logs f n \<namespace> \<pod name> c telegraf links telegraf operator https //github com/influxdata/telegraf operator/blob/master/readme md https //github com/influxdata/telegraf operator/blob/master/readme md plugins https //github com/influxdata/telegraf/tree/master/plugins/inputs https //github com/influxdata/telegraf/tree/master/plugins/inputs