Cómo configurar TOBS, The Observability Stack, para monitoreo de Kubernetes

Estado: Obsoleto

Este artículo está obsoleto y ya no se mantiene.

Razón

El instalador de TOBS ha sido obsoleto en la fuente principal.

Ver en su lugar

La documentación oficial de TOBS.

Introducción

TOBS, abreviatura de The Observability Stack, es una distribución preempaquetada de herramientas de monitoreo e interfaces de tablero que se pueden instalar en cualquier clúster de Kubernetes existente. Incluye muchas de las herramientas de observabilidad de código abierto más populares con Prometheus y Grafana como base, incluyendo Promlens, TimescaleDB, Alertmanager, y otros. Juntos, estos proporcionan una solución sencilla y mantenible para analizar el tráfico del servidor e identificar cualquier problema potencial con una implementación hasta una escala muy grande.

TOBS utiliza gráficos estándar de Helm de Kubernetes para configurar y actualizar implementaciones. Se puede instalar en cualquier clúster de Kubernetes, pero se puede demostrar de manera más efectiva si estás ejecutando kubectl para administrar tu clúster desde una máquina local en lugar de un nodo remoto. El Kubernetes Administrado de DigitalOcean proporcionará una configuración como esta de forma predeterminada.

En este tutorial, instalarás TOBS en un clúster de Kubernetes existente y aprenderás cómo actualizar, configurar y navegar por los paneles de sus componentes.

Prerrequisitos

Para seguir este tutorial, necesitarás:

  • Un clúster de Kubernetes con control de acceso basado en roles (RBAC) habilitado. Esta configuración utilizará un clúster de Kubernetes de DigitalOcean, pero eres libre de crear un clúster usando otro método. Tu versión de Kubernetes debe coincidir con una versión de TOBS compatible.

  • La herramienta de línea de comandos kubectl instalada en tu máquina local y configurada para conectarse a tu clúster. Puedes leer más sobre la instalación de kubectl en la documentación oficial. Si estás utilizando un clúster de Kubernetes de DigitalOcean, consulta Cómo Conectar a un Clúster de Kubernetes de DigitalOcean para aprender cómo conectarte a tu clúster usando kubectl.

Paso 1 — Verificar tu Configuración de Kubernetes

Para instalar TOBS, primero debes tener una configuración de Kubernetes válida establecida con kubectl desde la cual puedas hacer ping a tus nodos trabajadores. Puedes probar esto ejecutando kubectl get nodes:

  1. kubectl get nodes

Si kubectl puede conectarse a su clúster de Kubernetes y está funcionando correctamente, este comando devolverá una lista de nodos con el estado 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

Si esto es exitoso, puedes pasar al Paso 2. Si no, debes revisar los detalles de tu configuración en busca de problemas.

De forma predeterminada, kubectl buscará un archivo en ~/.kube/config para comprender su entorno. Para verificar que este archivo existe y contiene sintaxis YAML válida, puedes ejecutar head en él para ver sus primeras líneas, es decir:

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

Si el archivo no existe, asegúrate de haber iniciado sesión como el mismo usuario con el que configuraste Kubernetes. Las rutas ~/ reflejan los directorios de inicio de sesión de usuarios individuales, y las configuraciones de Kubernetes se guardan por usuario de forma predeterminada.

Si estás utilizando Kubernetes gestionado de DigitalOcean, asegúrate de haber ejecutado el comando doctl kubernetes cluster kubeconfig save después de configurar un clúster para que tu máquina local pueda autenticarse en él. Esto creará un archivo ~/.kube/config:

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

Si estás utilizando esta máquina para acceder a múltiples clústeres, debes revisar la documentación de Kubernetes sobre el uso de variables de entorno y múltiples archivos de configuración para evitar conflictos. Después de configurar tu entorno kubectl, puedes pasar a instalar TOBS en el siguiente paso.

Paso 2 — Instalación de TOBS y Pruebas de sus Puntos de Acceso

TOBS incluye los siguientes componentes:

  • Prometheus es una base de datos de series temporales y una herramienta de monitoreo que funciona mediante la obtención de métricas de puntos de acceso y el raspado y procesamiento de los datos expuestos por estos puntos de acceso. Permite consultar estos datos utilizando PromQL, un lenguaje de consulta de datos de series temporales.
  • Alertmanager, generalmente implementado junto con Prometheus, forma la capa de alerta del conjunto, manejando alertas generadas por Prometheus y eliminándolas, agrupándolas y enviándolas a integraciones como correo electrónico o PagerDuty. Para obtener más información sobre Alertmanager, consulte la documentación de Prometheus sobre alertas.
  • Grafana es una herramienta de visualización de datos y análisis que le permite crear paneles y gráficos para sus datos métricos.
  • kube-state-metrics es un agente adicional que escucha el servidor de API de Kubernetes y genera métricas sobre el estado de los objetos de Kubernetes como Implementaciones y Pods. Estas métricas se sirven en texto sin formato en puntos de acceso HTTP y son consumidas por Prometheus.
  • Por último está node-exporter, un exportador de Prometheus que se ejecuta en los nodos del clúster y proporciona métricas del sistema operativo y del hardware como el uso de CPU y memoria a Prometheus. Estas métricas también se sirven como texto sin formato en puntos finales HTTP y son consumidas por Prometheus.

Para instalar TOBS, primero debes ejecutar el instalador de TOBS en tu plano de control. Esto configurará el comando tobs y los directorios de configuración. Como se menciona en los requisitos previos, el comando tobs está diseñado para funcionar solo en sistemas Linux/macOS/BSD (como los binarios oficiales de Kubernetes), así que si has estado utilizando Windows hasta ahora, deberías estar trabajando en el entorno Subsistema de Windows para Linux.

Recupera y ejecuta el instalador de 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.

Ahora puedes implementar TOBS en tu clúster de Kubernetes. Esto se hace con una sola línea usando tu recién proporcionado comando tobs:

  1. tobs install

Esto generará varias líneas de salida y puede llevar unos momentos. Dependiendo de tu versión exacta de Kubernetes, puede haber varias advertencias en la salida, pero puedes ignorarlas siempre y cuando eventualmente recibas el mensaje Bienvenido a 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 …

La salida a partir de este punto contendrá instrucciones para conectarte a cada uno de los puntos finales web de Prometheus, TimescaleDB, PromLens y Grafana en tu navegador. Se reproduce a continuación en su totalidad para referencia:

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 uno de estos está provisto con un nombre DNS interno para tu clúster, de modo que puedan ser accedidos desde cualquiera de tus nodos trabajadores, por ejemplo, tobs-kube-prometheus-alertmanager.default.svc.cluster.local para Prometheus. Además, hay configurado un comando de reenvío de puertos para cada uno que te permite acceder a ellos desde un navegador web local.

En una nueva terminal, ejecuta tobs prometheus port-forward:

  1. tobs prometheus port-forward

Esto ocupará la terminal mientras el proceso de reenvío de puertos esté activo. Puedes presionar Ctrl+C para salir de forma segura de un proceso de bloqueo como este cuando desees dejar de reenviar el puerto. Luego, en un navegador web, ve a la URL http://127.0.0.1:9090/. Deberías ver la interfaz completa de Prometheus ejecutándose y produciendo métricas desde tu clúster:

Puedes hacer lo mismo para Grafana, que es accesible en http://127.0.0.1:8080/ siempre y cuando el reenvío de puertos esté activo en otro proceso. Primero, necesitarás usar el comando get-password proporcionado por la salida del instalador:

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

Luego, puedes usar esta contraseña para iniciar sesión en la interfaz de Grafana ejecutando su comando de reenvío de puertos y abriendo http://127.0.0.1:8080/ en tu navegador.

  1. tobs grafana port-forward

Ahora tienes un stack TOBS funcionando en tu clúster de Kubernetes. Puedes consultar la documentación de los componentes individuales para aprender sobre sus respectivas características. En el último paso de este tutorial, aprenderás cómo realizar actualizaciones en la configuración de TOBS en sí mismo.

Paso 3 — Edición de Configuraciones TOBS y Actualización

La configuración de TOBS contiene algunos parámetros para las aplicaciones individuales en el stack, así como algunos parámetros para el despliegue de TOBS en sí. Se genera y almacena como un gráfico Helm de Kubernetes (Helm chart). Puedes obtener tu configuración actual ejecutando tobs helm show-values. Sin embargo, esto mostrará la configuración completa y extensa en tu terminal, lo que puede ser difícil de leer. En su lugar, puedes redirigir la salida a un archivo con la extensión .yaml, ya que los gráficos Helm son válidos en sintaxis YAML:

  1. tobs helm show-values > values.yaml

El contenido del archivo se verá así:

~/values.yaml
2022/01/10 11:56:37 Transport: unhandled response frame type *http.http2UnknownFrame
# Valores para configurar el despliegue de TimescaleDB
# El README de los gráficos está en:
#    https://github.com/timescale/timescaledb-kubernetes/tree/master/charts/timescaledb-single
# Consulta las diversas opciones de configuración (guía de administración) en:
#    https://github.com/timescale/timescaledb-kubernetes/blob/master/charts/timescaledb-single/admin-guide.md
cli: false

# Sobrescribe el espacio de nombres del despliegue
namespaceOverride: ""
…

Puedes revisar los parámetros adicionales disponibles para la configuración de TOBS leyendo la documentación de TOBS

Si alguna vez modificas este archivo para actualizar tu despliegue, puedes reinstalar TOBS sobre sí mismo utilizando la configuración actualizada. Solo pasa la opción -f al comando tobs install con el archivo YAML como argumento adicional:

  1. tobs install -f values.yaml

Finalmente, puedes actualizar TOBS con el siguiente comando:

  1. tobs upgrade

Esto realiza el equivalente de un helm upgrade al buscar la versión más reciente del gráfico en la fuente principal.

Conclusión

En este tutorial, aprendiste a implementar y configurar TOBS, The Observability Stack, en un clúster de Kubernetes existente. TOBS es particularmente útil porque elimina la necesidad de mantener individualmente los detalles de configuración para cada una de estas aplicaciones, al tiempo que proporciona un monitoreo estandarizado para las aplicaciones que se ejecutan en tu clúster.

A continuación, es posible que desees aprender cómo usar Cert-Manager para manejar el ingreso HTTPS a tu clúster de Kubernetes.

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