Como Configurar o TOBS, o Stack de Observabilidade, para Monitoramento Kubernetes

Estado: Obsoleto

Este artigo está obsoleto e não é mais mantido.

Motivo

O instalador TOBS foi descontinuado pela fonte original.

Veja em vez disso

A documentação oficial do TOBS.

Introdução

TOBS, abreviação de The Observability Stack, é uma distribuição pré-empacotada de ferramentas de monitoramento e interfaces de painel que podem ser instaladas em qualquer cluster Kubernetes existente. Inclui muitas das ferramentas de observabilidade de código aberto mais populares, com Prometheus e Grafana como base, incluindo Promlens, TimescaleDB, Alertmanager e outros. Juntos, eles fornecem uma solução direta e fácil de manter para analisar o tráfego do servidor e identificar possíveis problemas com um deployment em uma escala muito grande.

TOBS faz uso de gráficos Helm Kubernetes padrão para configurar e atualizar implantações. Pode ser instalado em qualquer cluster Kubernetes, mas pode ser demonstrado de forma mais eficaz se você estiver executando kubectl para gerenciar seu cluster a partir de uma máquina local em vez de um nó remoto. O Kubernetes Gerenciado da DigitalOcean fornecerá uma configuração como esta por padrão.

Neste tutorial, você instalará o TOBS em um cluster Kubernetes existente e aprenderá como atualizar, configurar e navegar pelos painéis de seus componentes.

Pré-requisitos

Para seguir este tutorial, você precisará:

Passo 1 — Verificando sua Configuração do Kubernetes

Para instalar o TOBS, você deve primeiro ter uma configuração válida do Kubernetes configurada com o kubectl a partir da qual você possa pingar seus nós de trabalho. Você pode testar isso executando kubectl get nodes:

  1. kubectl get nodes

Se o kubectl consegue conectar-se ao seu cluster Kubernetes e está em execução conforme o esperado, este comando retornará uma lista de nós com o status Ready:

Output
NAME STATUS ROLES AGE VERSION pool-uqv8a47h0-ul5a7 Ready <none> 22m v1.21.5 pool-uqv8a47h0-ul5am Ready <none> 21m v1.21.5 pool-uqv8a47h0-ul5aq Ready <none> 21m v1.21.5

Se isso for bem-sucedido, você pode prosseguir para Passo 2. Se não for, você deve revisar os detalhes da sua configuração em busca de problemas.

Por padrão, o kubectl procurará por um arquivo em ~/.kube/config para entender o seu ambiente. Para verificar se este arquivo existe e contém sintaxe YAML válida, você pode executar head nele para visualizar suas primeiras várias linhas, isto é:

  1. head ~/.kube/config
Output
apiVersion: v1 clusters: - cluster: certificate-authority-data: …

Se o arquivo não existir, verifique se você está logado como o mesmo usuário que configurou o Kubernetes. Os caminhos ~/ refletem os diretórios pessoais dos usuários, e as configurações do Kubernetes são salvas por usuário por padrão.

Se você estiver usando o Kubernetes gerenciado pela DigitalOcean, verifique se você executou o comando doctl kubernetes cluster kubeconfig save após configurar um cluster para que sua máquina local possa autenticar-se nele. Isso criará um arquivo ~/.kube/config:

  1. doctl kubernetes cluster kubeconfig save your-cluster-name

Se você estiver usando esta máquina para acessar vários clusters, você deve revisar a documentação do Kubernetes sobre o uso de variáveis de ambiente e múltiplos arquivos de configuração para evitar conflitos. Após configurar seu ambiente kubectl, você pode prosseguir para instalar o TOBS no próximo passo.

Passo 2 — Instalando TOBS e Testando Seus Endpoints

O TOBS inclui os seguintes componentes:

  • Prometheus é um banco de dados de séries temporais e uma ferramenta de monitoramento que funciona através da coleta de métricas de endpoints e raspagem e processamento dos dados expostos por esses endpoints. Permite que você consulte esses dados usando PromQL, uma linguagem de consulta de dados de séries temporais.
  • Alertmanager, geralmente implantado junto com o Prometheus, forma a camada de alerta da pilha, lidando com alertas gerados pelo Prometheus e deduplicando, agrupando e encaminhando-os para integrações como e-mail ou PagerDuty. Para saber mais sobre o Alertmanager, consulte a documentação do Prometheus sobre alertas.
  • Grafana é uma ferramenta de visualização de dados e análise que permite criar painéis e gráficos para seus dados de métricas.
  • kube-state-metrics é um agente adicional que escuta o servidor da API do Kubernetes e gera métricas sobre o estado de objetos do Kubernetes como Implantações e Pods. Essas métricas são servidas como texto simples em endpoints HTTP e consumidas pelo Prometheus.
  • Por último está o node-exporter, um exportador do Prometheus que é executado em nós do cluster e fornece métricas de sistema operacional e hardware como uso de CPU e memória ao Prometheus. Essas métricas também são servidas como texto simples em endpoints HTTP e consumidas pelo Prometheus.

Para instalar o TOBS, primeiro você precisa executar o instalador do TOBS em seu plano de controle. Isso configurará o comando tobs e os diretórios de configuração. Conforme mencionado nos pré-requisitos, o comando tobs foi projetado para funcionar apenas em sistemas Linux/macOS/BSD (como os binários oficiais do Kubernetes), então se você estava usando o Windows até agora, deve estar trabalhando no ambiente Windows Subsystem for Linux.

Recupere e execute o instalador do TOBS:

  1. curl --proto '=https' --tlsv1.2 -sSLf https://tsdb.co/install-tobs-sh |sh
Output
tobs 0.7.0 was successfully installed ? Binary is available at /root/.local/bin/tobs.

Agora você pode implantar o TOBS em seu cluster Kubernetes. Isso é feito com uma única linha usando o seu novo comando tobs:

  1. tobs install

Isso gerará várias linhas de saída e pode levar alguns momentos. Dependendo da sua versão exata do Kubernetes, pode haver várias advertências na saída, mas você pode ignorá-las desde que eventualmente receba a mensagem Bem-vindo ao tobs:

Output
WARNING: Using a generated self-signed certificate for TLS access to TimescaleDB. This should only be used for development and demonstration purposes. To use a signed certificate, use the "--tls-timescaledb-cert" and "--tls-timescaledb-key" flags when issuing the tobs install command. Creating TimescaleDB tobs-certificate secret Creating TimescaleDB tobs-credentials secret skipping to create TimescaleDB s3 backup secret as backup option is disabled. 2022/01/10 11:25:34 Transport: unhandled response frame type *http.http2UnknownFrame 2022/01/10 11:25:35 Transport: unhandled response frame type *http.http2UnknownFrame 2022/01/10 11:25:35 Transport: unhandled response frame type *http.http2UnknownFrame Installing The Observability Stack 2022/01/10 11:25:37 Transport: unhandled response frame type *http.http2UnknownFrame W0110 11:25:55.438728 75479 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ W0110 11:25:55.646392 75479 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ … ?? Welcome to tobs, The Observability Stack for Kubernetes …

A partir deste ponto, a saída conterá instruções para se conectar a cada um dos endpoints web do Prometheus, TimescaleDB, PromLens e Grafana em seu navegador. Está reproduzido abaixo para referência:

Output
############################################################################### ? PROMETHEUS NOTES: ############################################################################### Prometheus can be accessed via port 9090 on the following DNS name from within your cluster: tobs-kube-prometheus-prometheus.default.svc.cluster.local Get the Prometheus server URL by running these commands in the same shell: tobs prometheus port-forward The Prometheus alertmanager can be accessed via port 9093 on the following DNS name from within your cluster: tobs-kube-prometheus-alertmanager.default.svc.cluster.local Get the Alertmanager URL by running these commands in the same shell: export POD_NAME=$(kubectl get pods --namespace default -l "app=alertmanager,alertmanager=tobs-kube-prometheus-alertmanager" -o jsonpath="{.items[0].metadata.name}") kubectl --namespace default port-forward $POD_NAME 9093 WARNING! Persistence is disabled on AlertManager. You will lose your data when the AlertManager pod is terminated. ############################################################################### ? TIMESCALEDB NOTES: ############################################################################### TimescaleDB can be accessed via port 5432 on the following DNS name from within your cluster: tobs.default.svc.cluster.local To get your password for superuser run: tobs timescaledb get-password -U <user> To connect to your database, chose one of these options: 1. Run a postgres pod and connect using the psql cli: tobs timescaledb connect -U <user> 2. Directly execute a psql session on the master node tobs timescaledb connect -m ############################################################################### ? PROMLENS NOTES: ############################################################################### PromLens is a PromQL query builder, analyzer, and visualizer. You can access PromLens via a local browser by executing: tobs promlens port-forward Then you can point your browser to http://127.0.0.1:8081/. ############################################################################### ? GRAFANA NOTES: ############################################################################### 1. The Grafana server can be accessed via port 80 on the following DNS name from within your cluster: tobs-grafana.default.svc.cluster.local You can access grafana locally by executing: tobs grafana port-forward Then you can point your browser to http://127.0.0.1:8080/. 2. The 'admin' user password can be retrieved by: tobs grafana get-password 3. You can reset the admin user password with grafana-cli from inside the pod. tobs grafana change-password <password-you-want-to-set>

Cada um destes é fornecido com um nome DNS interno ao seu cluster para que possam ser acessados a partir de qualquer um dos seus nós de trabalho, por exemplo, tobs-kube-prometheus-alertmanager.default.svc.cluster.local para o Prometheus. Além disso, há um comando de encaminhamento de porta configurado para cada um que permite acessá-los a partir de um navegador da web local.

Em um novo terminal, execute tobs prometheus port-forward:

  1. tobs prometheus port-forward

Isso ocupará o terminal enquanto o processo de encaminhamento de porta estiver ativo. Você pode pressionar Ctrl+C para sair graciosamente de um processo de bloqueio como este quando quiser parar de encaminhar a porta. Em seguida, em um navegador da web, vá para o URL http://127.0.0.1:9090/. Você deverá ver a interface completa do Prometheus em execução e produzindo métricas do seu cluster:

Você pode fazer o mesmo para o Grafana, que é acessível em http://127.0.0.1:8080/ enquanto o encaminhamento de porta estiver ativo em outro processo. Primeiro, você precisará usar o comando get-password fornecido pela saída do instalador:

  1. tobs grafana get-password
Output
your-grafana-password

Você pode então usar esta senha para fazer login na interface do Grafana executando seu comando de encaminhamento de porta e abrindo http://127.0.0.1:8080/ no seu navegador.

  1. tobs grafana port-forward

Agora você tem um TOBS stack funcionando em seu cluster Kubernetes. Você pode consultar a documentação dos componentes individuais para aprender sobre suas respectivas funcionalidades. No último passo deste tutorial, você aprenderá como fazer atualizações na própria configuração do TOBS.

Passo 3 — Edição de Configurações TOBS e Atualização

A configuração do TOBS contém alguns parâmetros para as aplicações individuais na pilha, bem como alguns parâmetros para o próprio deployment do TOBS. É gerado e armazenado como um gráfico Helm Kubernetes. Você pode exibir sua configuração atual executando tobs helm show-values. No entanto, isso irá imprimir toda a configuração longa no seu terminal, o que pode ser difícil de ler. Você pode, em vez disso, redirecionar a saída para um arquivo com a extensão .yaml, porque os gráficos Helm são todos válidos na sintaxe YAML:

  1. tobs helm show-values > values.yaml

O conteúdo do arquivo ficará assim:

~/values.yaml
2022/01/10 11:56:37 Transport: unhandled response frame type *http.http2UnknownFrame
# Valores para configurar o deployment do TimescaleDB
# O README dos gráficos está em:
#    https://github.com/timescale/timescaledb-kubernetes/tree/master/charts/timescaledb-single
# Consulte as várias opções de configuração (guia de administração) em:
#    https://github.com/timescale/timescaledb-kubernetes/blob/master/charts/timescaledb-single/admin-guide.md
cli: false

# Substitua o namespace do deployment
namespaceOverride: ""
…

Você pode revisar os parâmetros adicionais disponíveis para a configuração do TOBS lendo a documentação do TOBS

Se você alguma vez modificar este arquivo para atualizar seu deployment, você pode reinstalar o TOBS sobre si mesmo usando a configuração atualizada. Basta passar a opção -f para o comando tobs install com o arquivo YAML como argumento adicional:

  1. tobs install -f values.yaml

Finalmente, você pode atualizar o TOBS com o seguinte comando:

  1. tobs upgrade

Isso executa o equivalente a um helm upgrade ao buscar o gráfico mais recente do upstream.

Conclusão

Neste tutorial, você aprendeu a implantar e configurar o TOBS, The Observability Stack, em um cluster Kubernetes existente. O TOBS é particularmente útil porque elimina a necessidade de manter detalhes de configuração individualmente para cada um desses aplicativos, ao mesmo tempo que fornece monitoramento padronizado para os aplicativos em execução no seu cluster.

Em seguida, você pode querer aprender como usar o Cert-Manager para lidar com o ingresso HTTPS para o seu cluster Kubernetes.

Source:
https://www.digitalocean.com/community/tutorials/how-to-set-up-tobs-the-observability-stack-for-kubernetes-monitoring