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á:
-
Um cluster Kubernetes com controle de acesso baseado em função (RBAC) habilitado. Esta configuração usará um cluster Kubernetes DigitalOcean, mas você é livre para criar um cluster usando outro método. Sua versão do Kubernetes deve corresponder a uma versão TOBS suportada.
-
A ferramenta de linha de comando
kubectl
instalada no seu computador local e configurada para se conectar ao seu cluster. Você pode ler mais sobre a instalação dokubectl
na documentação oficial. Se estiver usando um cluster Kubernetes da DigitalOcean, consulte Como Conectar a um Cluster Kubernetes da DigitalOcean para aprender como se conectar ao seu cluster usando okubectl
.
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
:
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
:
OutputNAME 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 é:
OutputapiVersion: 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
:
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:
Outputtobs 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
:
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
:
OutputWARNING: 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
:
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:
Outputyour-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.
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:
O conteúdo do arquivo ficará assim:
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:
Finalmente, você pode atualizar o TOBS com o seguinte comando:
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.