Monitoramento de Recursos de Pods
Configurando monitoramento de recursos do Kubernetes
O monitoramento de recursos do Kubernetes com o Telegraf requer algumas configurações específicas para garantir que o Telegraf tenha permissão para acessar e coletar dados dos pods.
Criar ou fazer mudanças em uma autorização token para o API kubelet:
Para isso, siga as instruções abaixo e adicione as seguintes configurações no arquivo dev.yml do telegraf-operator:
Caso não use o arquivo dev.yml criar a propria ClusterRole baseada nos arquivos yml abaixo:
ClusterRoleBinding yaml:
Este arquivo cria um ClusterRoleBinding chamado telegraf-operator que vincula o Service Account telegraf-operator ao ClusterRole cluster-admin, concedendo permissões administrativas em todo o cluster.
O nome cluster-admin não pode ser alterado, pois se refere a um ClusterRole padrão no Kubernetes.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: telegraf-operator
labels:
app: telegraf-operator
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: telegraf-operator
namespace: telegraf-operator
Secret yaml:
Este arquivo cria um Secret chamado telegraf-operator-certs que contém o token de acesso para o Service Account telegraf-operator, permitindo que o Telegraf autentique-se no kubelet e colete dados de monitoramento dos pods.
apiVersion: v1
kind: Secret
metadata:
name: telegraf-operator-certs
namespace: telegraf-operator
annotations:
kubernetes.io/service-account.name: telegraf-operator
data:
tls.crt:
.....
tls.key:
.....
type: kubernetes.io/service-account-token
Comando para pegar o Token criado a partir do secret a cima:
Após aplicar as configurações acima, você pode usar o seguinte comando para obter o token criado a partir do secret:
TOKEN=$(kubectl get secret telegraf-operator-certs -n telegraf-operator -o jsonpath='{.data.token}' | base64 --decode)
Esse token será usado para configurar o Telegraf para acessar o kubelet e coletar os dados de monitoramento dos pods. Dessa forma:
Editar o arquivo classes.yml:
Adicione [[inputs.kubernetes]] dentro da classe usada. Coloque o ip do node, o token gerado acima e o parametro para pular a verificação de segurança se necessário.
[[inputs.kubernetes]]
url = "https://node-ip:10250"
bearer_token_string = "<RESULTADO-DE-$TOKEN>"
insecure_skip_verify = true