Comment configurer TOBS, la pile d’observabilité, pour la surveillance Kubernetes

Statut: Obsolète

Cet article est obsolète et n’est plus maintenu.

Raison

L’installateur TOBS a été rendu obsolète en amont.

Voir à la place

La documentation officielle de TOBS.

Introduction

TOBS, abréviation de The Observability Stack, est une distribution pré-emballée d’outils de surveillance et d’interfaces de tableau de bord qui peuvent être installés dans n’importe quel cluster Kubernetes existant. Il comprend la plupart des outils d’observabilité open-source les plus populaires avec Prometheus et Grafana comme base, notamment Promlens, TimescaleDB, Alertmanager, et d’autres. Ensemble, ils fournissent une solution simple et maintenable pour analyser le trafic serveur et identifier tout problème potentiel avec un déploiement jusqu’à une très grande échelle.

TOBS utilise des charts Helm Kubernetes standard pour configurer et mettre à jour les déploiements. Il peut être installé dans n’importe quel cluster Kubernetes, mais il peut être démontré plus efficacement si vous exécutez kubectl pour gérer votre cluster à partir d’une machine locale plutôt que d’un nœud distant. Le Managed Kubernetes de DigitalOcean vous fournira une configuration comme celle-ci par défaut.

Dans ce tutoriel, vous installerez TOBS dans un cluster Kubernetes existant et apprendrez comment mettre à jour, configurer et parcourir ses tableaux de bord de composants.

Prérequis

Pour suivre ce tutoriel, vous aurez besoin de :

Étape 1 — Vérification de votre configuration Kubernetes

Pour installer TOBS, vous devez d’abord avoir une configuration Kubernetes valide avec kubectl à partir de laquelle vous pouvez interroger vos nœuds de travail. Vous pouvez tester cela en exécutant kubectl get nodes:

  1. kubectl get nodes

Si kubectl peut se connecter à votre cluster Kubernetes et qu’il fonctionne comme prévu, cette commande renverra une liste de nœuds avec le statut 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 cela réussit, vous pouvez passer à l’étape 2. Sinon, vous devriez revoir les détails de votre configuration pour détecter d’éventuels problèmes.

Par défaut, kubectl recherchera un fichier à l’emplacement ~/.kube/config afin de comprendre votre environnement. Pour vérifier que ce fichier existe et contient une syntaxe YAML valide, vous pouvez exécuter la commande head pour afficher ses premières lignes, i:

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

Si le fichier n’existe pas, assurez-vous d’être connecté en tant que même utilisateur avec lequel vous avez configuré Kubernetes. Les chemins ~/ reflètent les répertoires personnels des utilisateurs individuels, et les configurations Kubernetes sont sauvegardées par utilisateur par défaut.

Si vous utilisez Kubernetes géré par DigitalOcean, assurez-vous d’avoir exécuté la commande doctl kubernetes cluster kubeconfig save après avoir configuré un cluster afin que votre machine locale puisse s’authentifier. Cela créera un fichier ~/.kube/config :

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

Si vous utilisez cette machine pour accéder à plusieurs clusters, vous devriez consulter la documentation Kubernetes sur l’utilisation de variables d’environnement et de plusieurs fichiers de configuration afin d’éviter les conflits. Après avoir configuré votre environnement kubectl, vous pouvez passer à l’installation de TOBS à l’étape suivante.

Étape 2 — Installation de TOBS et Test de Vos Points de Terminaison

TOBS comprend les composants suivants :

  • Prometheus est une base de données de séries temporelles et un outil de surveillance qui fonctionne en interrogeant les points de terminaison des métriques et en extrayant et traitant les données exposées par ces points de terminaison. Il vous permet d’interroger ces données à l’aide de PromQL, un langage de requête de données de séries temporelles.
  • Alertmanager, généralement déployé aux côtés de Prometheus, forme la couche d’alerte de la pile, gérant les alertes générées par Prometheus et les dédupliquant, les regroupant et les routant vers des intégrations telles que l’e-mail ou PagerDuty. Pour en savoir plus sur Alertmanager, consultez la documentation de Prometheus sur les alertes.
  • Grafana est un outil de visualisation de données et d’analyse qui vous permet de construire des tableaux de bord et des graphiques pour vos données de métriques.
  • kube-state-metrics est un agent complémentaire qui écoute le serveur API Kubernetes et génère des métriques sur l’état des objets Kubernetes tels que les déploiements et les pods. Ces métriques sont servies en texte brut sur des points de terminaison HTTP et consommées par Prometheus.
  • Enfin, il y a node-exporter, un exportateur Prometheus qui s’exécute sur les nœuds du cluster et fournit des métriques du système d’exploitation et du matériel telles que l’utilisation du CPU et de la mémoire à Prometheus. Ces métriques sont également servies en texte brut sur des points de terminaison HTTP et consommées par Prometheus.

Pour installer TOBS, vous devez d’abord exécuter l’installateur TOBS sur votre plan de contrôle. Cela configurera la commande tobs et les répertoires de configuration. Comme mentionné dans les prérequis, la commande tobs est uniquement conçue pour fonctionner sur les systèmes Linux/macOS/BSD (comme les binaires officiels de Kubernetes), donc si vous avez utilisé Windows jusqu’à présent, vous devriez travailler dans l’environnement Windows Subsystem for Linux.

Récupérez et exécutez l’installateur 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.

Vous pouvez maintenant déployer TOBS sur votre cluster Kubernetes. Cela se fait par une seule ligne à l’aide de votre nouvelle commande tobs :

  1. tobs install

Cela générera plusieurs lignes de sortie et peut prendre quelques instants. En fonction de votre version exacte de Kubernetes, il peut y avoir plusieurs avertissements dans la sortie, mais vous pouvez les ignorer tant que vous recevez finalement le message Bienvenue dans 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 …

À partir de ce moment, la sortie contiendra des instructions pour se connecter à chacun des points de terminaison web de Prometheus, TimescaleDB, PromLens et Grafana dans votre navigateur. Elle est reproduite ci-dessous intégralement à titre de référence :

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>

Chacun de ceux-ci est fourni avec un nom DNS interne à votre cluster afin qu’ils puissent être accessibles depuis n’importe lequel de vos nœuds de travail, par exemple tobs-kube-prometheus-alertmanager.default.svc.cluster.local pour Prometheus. De plus, une commande de redirection de port est configurée pour chacun d’eux, ce qui vous permet de les accéder depuis un navigateur Web local.

Dans un nouveau terminal, exécutez tobs prometheus port-forward:

  1. tobs prometheus port-forward

Cela occupera le terminal tant que le processus de redirection de port sera actif. Vous pouvez appuyer sur Ctrl+C pour quitter proprement un processus bloquant comme celui-ci lorsque vous souhaitez arrêter la redirection du port. Ensuite, dans un navigateur Web, allez à l’URL http://127.0.0.1:9090/. Vous devriez voir l’interface complète de Prometheus en cours d’exécution et produisant des métriques à partir de votre cluster :

Vous pouvez faire la même chose pour Grafana, qui est accessible à http://127.0.0.1:8080/ tant que la redirection de port est active dans un autre processus. Tout d’abord, vous devrez utiliser la commande get-password fournie par la sortie de l’installateur :

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

Vous pouvez ensuite utiliser ce mot de passe pour vous connecter à l’interface de Grafana en exécutant sa commande de redirection de port et en ouvrant http://127.0.0.1:8080/ dans votre navigateur.

  1. tobs grafana port-forward

Vous disposez désormais d’une pile TOBS fonctionnelle s’exécutant dans votre cluster Kubernetes. Vous pouvez vous référer à la documentation des composants individuels pour apprendre leurs fonctionnalités respectives. Dans la dernière étape de ce tutoriel, vous apprendrez comment effectuer des mises à jour de la configuration TOBS elle-même.

Étape 3 — Édition des configurations TOBS et Mise à jour

La configuration de TOBS contient certains paramètres pour les applications individuelles dans la pile, ainsi que certains paramètres pour le déploiement de TOBS lui-même. Elle est générée et stockée sous forme de graphique Helm Kubernetes. Vous pouvez afficher votre configuration actuelle en exécutant tobs helm show-values. Cependant, cela affichera l’intégralité de la longue configuration dans votre terminal, ce qui peut être difficile à lire. Vous pouvez plutôt rediriger la sortie vers un fichier avec l’extension .yaml, car les graphiques Helm sont tous syntaxiquement valides YAML :

  1. tobs helm show-values > values.yaml

Le contenu du fichier ressemblera à ceci :

~/values.yaml
2022/01/10 11:56:37 Transport: unhandled response frame type *http.http2UnknownFrame
# Valeurs pour configurer le déploiement de TimescaleDB
# Le README des graphiques se trouve à :
#    https://github.com/timescale/timescaledb-kubernetes/tree/master/charts/timescaledb-single
# Consultez les différentes options de configuration (guide d'administration) à :
#    https://github.com/timescale/timescaledb-kubernetes/blob/master/charts/timescaledb-single/admin-guide.md
cli: false

# Remplacer l'espace de noms de déploiement
namespaceOverride: ""
…

Vous pouvez examiner les paramètres supplémentaires disponibles pour la configuration de TOBS en lisant la documentation de TOBS

Si vous modifiez ce fichier pour mettre à jour votre déploiement, vous pouvez réinstaller TOBS sur lui-même en utilisant la configuration mise à jour. Il suffit de passer l’option -f à la commande tobs install avec le fichier YAML comme argument supplémentaire :

  1. tobs install -f values.yaml

Enfin, vous pouvez mettre à niveau TOBS avec la commande suivante :

  1. tobs upgrade

Cela effectue l’équivalent d’une helm upgrade en récupérant le dernier graphique en amont.

Conclusion

Dans ce tutoriel, vous avez appris à déployer et configurer TOBS, The Observability Stack, sur un cluster Kubernetes existant. TOBS est particulièrement utile car il élimine le besoin de maintenir individuellement les détails de configuration pour chacune de ces applications, tout en fournissant une surveillance standardisée pour les applications s’exécutant sur votre cluster.

Ensuite, vous voudrez peut-être apprendre comment utiliser Cert-Manager pour gérer l’ingress HTTPS vers votre cluster Kubernetes.

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