Monitoramento Kubernetes com Telegraf Operator
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 Repositório Helm do InfluxData. Verifique o link para configuração do helm e do telegraf-operator e o link para configuração do ambiente contido no arquivo Makefile.
Execute:
helm repo add influxdata https://helm.influxdata.com/
helm upgrade --install telegraf-operator influxdata/telegraf-operatorConfiguração do ambiente:
# garantir que o contexto correto do kubectl esteja definido e sendo
# usado, caso contrário irá falhar
kubectl config use-context telegraf-operator-nome
# criar namespace
kubectl create namespace <nome>2. 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 <dbworker_ip>(ceritifque-se que seja o. IP da instância DB Worker), <database>, <hostname> e <cluster> pelos valores desejados.
Exemplo de um arquivo classes.yml:
apiVersion: v1
kind: Namespace
metadata:
name: telegraf-operator
---
apiVersion: v1
kind: Secret
metadata:
name: telegraf-operator-classes
namespace: telegraf-operator
stringData:
#Classes básicas que podem ser usadas para desenvolver o operador do Telegraf; essas classes
#relatam para o InfluxDB v1 no mesmo cluster, e também para o arquivo stdout por conveniência
app: |+
[[outputs.influxdb]]
urls = ["<dbworker_ip>:8086"]
[global_tags]
database = "<database>"
hostname = "<hostname>"
cluster = "<cluster>"
default: |+
[[outputs.influxdb]]
urls = ["<dbworker_ip>:8086"]
[global_tags]
database = "<database>"
hostname = "<hostname>"
cluster = "<cluster>"
basic: |+
[[outputs.influxdb]]
urls = ["<dbworker_ip>:8086"]
[global_tags]
database = "<database>"
hostname = "<hostname>"
cluster = "<cluster>"3. Configurar o plugin do Telegraf:
O arquivo plugin_nome.yml define um StatefulSet para um plugin que será monitorado pelo Telegraf. 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 no link.
Exemplo de um arquivo nginx.yaml:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: nginx-deamon
namespace: test
spec:
serviceName: "nginx-telegraf"
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
annotations:
telegraf.influxdata.com/inputs: |+
[[inputs.nginx]]
urls = ["<nginx-url>"]
telegraf.influxdata.com/class: app
telegraf.influxdata.com/env-fieldref-NAMESPACE: metadata.namespace
telegraf.influxdata.com/limits-cpu: '750m'
# limite de memória inválido, que será ignorado
telegraf.influxdata.com/limits-memory: '800x'
spec:
containers:
- name: nginx
image: nginx:alpine4. 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:
kubectl config use-context telegraf-operator-nome
kubectl apply -f classes.yml
kubectl apply -f dev.yml
kubectl apply -f examples/plugin_nome.yml
kubectl describe pod --namespace=<namespace> <pod_name> Acesso aos logs do deploy:
kubectl logs -f -n <namespace> <pod_name> -c telegrafLinks: Telegraf Operator:
Plugins: