<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Supervision on Zwindler's Reflection</title><link>https://blog.zwindler.fr/tags/supervision/</link><description>Recent content in Supervision on Zwindler's Reflection</description><generator>Hugo -- gohugo.io</generator><language>fr</language><copyright>Licensed under CC BY-SA 4.0</copyright><lastBuildDate>Mon, 08 Jun 2020 06:35:00 +0000</lastBuildDate><atom:link href="https://blog.zwindler.fr/tags/supervision/index.xml" rel="self" type="application/rss+xml"/><item><title>Superviser votre instance Jitsi avec Prometheus et Grafana</title><link>https://blog.zwindler.fr/2020/06/08/superviser-votre-instance-jitsi-avec-prometheus-et-grafana/</link><pubDate>Mon, 08 Jun 2020 06:35:00 +0000</pubDate><guid>https://blog.zwindler.fr/2020/06/08/superviser-votre-instance-jitsi-avec-prometheus-et-grafana/</guid><description>&lt;img src="https://blog.zwindler.fr/2020/04/10participants.webp" alt="Featured image of post Superviser votre instance Jitsi avec Prometheus et Grafana" /&gt;&lt;h2 id="quel-rapport-entre-jitsi-et-prometheus-"&gt;Quel rapport entre Jitsi et Prometheus ?
&lt;/h2&gt;&lt;p&gt;Si vous avez suivi un peu mes articles depuis le début du confinement, vous aurez vu qu’en ce moment je fais du Jitsi (cf &lt;a class="link" href="https://blog.zwindler.fr/2020/03/17/ta-visio-open-source-comme-un-pro-avec-jitsi/" &gt;Ta visio Open Source comme un pro avec Jitsi&lt;/a&gt;) et du Prometheus (cf &lt;a class="link" href="https://blog.zwindler.fr/2020/04/13/decouvrir-prometheus-et-grafana-par-lexemple/" &gt;Découvrir Prometheus et Grafana par l’exemple&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Et ça tombe super bien, car aujourd’hui je vais vous parler des deux !&lt;/p&gt;
&lt;h2 id="lappel-des-chatons"&gt;L’appel des Chatons
&lt;/h2&gt;&lt;p&gt;J’ai pas trop communiqué là dessus, mais lorsque le confinement a commencé, les ENT étant down, beaucoup d’enseignants se sont tournés vers Framasoft, qui héberge entre autre des services d’éditions de texte en collaboratif ainsi que des instances de visio conférences Jitsi.&lt;/p&gt;
&lt;p&gt;Ça a pas mal râlé côté Framasoft car ça fait des années qu’ils expliquent qu’en tant qu’association 1901, ils n’ont ni les moyens ni l’envie de supporter les conséquences des mauvais choix technologiques / budgétaires de l’éducation nationale. (Si vous voyez pas trop où que je veux en venir, allez voir leur site, ils l’expliquent mieux que moi). Et de fermer ces deux services temporairement dans la foulée.&lt;/p&gt;
&lt;p&gt;Suite à quoi, les CHATONS se sont proposés de faire le relais en listant un ensemble de services Jitsi et Etherpad mis à dispositions par des CHATONS et des particuliers (et maintenant plus encore).&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2020/04/framasoft_jitsi_chatons.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;J’ai pas trop communiqué là dessus, mais moi aussi j’ai mis mon instance à dispo.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2020/04/chaton.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Coucouuuuuu, je suis là !!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="et-alors-des-gens-sen-servent-"&gt;Et alors, des gens s’en servent ?
&lt;/h2&gt;&lt;p&gt;C’est super cool, j’ai mis à dispo une instance jitsi qui a priori a été utile à plusieurs personnes.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2020/04/jitsi_croixrouge_be.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Mais jusqu’à présent, au delà du trafic CPU/réseau que je vois monter de temps en temps, je n’avais aucune idée de la quantité de conférences qui se tenaient sur mon instance.&lt;/p&gt;
&lt;p&gt;Puis, j’ai vu ce tweet de pyg, qui m’a relancé sur le sujet.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2020/04/pyg_jitsi.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Ouuuaaaah, la classe :D&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;A vue de nez, c’est du Grafana. J’ai donc voulu trouver comment brancher Jitsi à ma supervision existante.&lt;/p&gt;
&lt;h2 id="deux-exporters-pour-le-prix-dun"&gt;Deux exporters pour le prix d’un
&lt;/h2&gt;&lt;p&gt;La première chose à faire était donc de trouver un exporter prometheus compatible avec Jitsi, histoire de pouvoir capitaliser sur l’infrastructure (Grafana/Prom) actuelle.&lt;/p&gt;
&lt;p&gt;J’ai trouvé 2 projets en Go :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;jitsi-prom-exporter dont j’ai trouvé la trace sur &lt;a class="link" href="https://community.jitsi.org/t/monitoring-jvb-metrics-prometheus-grafana/19822" target="_blank" rel="noopener"
&gt;le forum de jitsi&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/xsteadfastx/jitsiexporter" target="_blank" rel="noopener"
&gt;jitsiexporter&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Les deux n’étant pas franchement bien documentés (et je suis une quiche en Go), je me suis d’abord orienté vers jitsi-prom-exporter, plus &amp;ldquo;connu&amp;rdquo; (enfin, ça se joue à 10 étoiles sur Github hein&amp;hellip;).&lt;/p&gt;
&lt;p&gt;Mais je n’ai jamais réussi à le compiler (vive le Go) et comme je n’y comprend rien après avoir ragé quelques heures (ma femme confirme) j’ai laissé tombé. [Edit]En vrai j’ai fini par le faire marché avec de l’aide et beaucoup de trial and error mais bon&amp;hellip; Il faut faire &lt;a class="link" href="https://github.com/karrieretutor/jitsi-prom-exporter/issues/3#issuecomment-614512142" target="_blank" rel="noopener"
&gt;ça&lt;/a&gt;, &lt;a class="link" href="https://github.com/karrieretutor/jitsi-prom-exporter/issues/3#issuecomment-614651103" target="_blank" rel="noopener"
&gt;ça&lt;/a&gt; puis &lt;a class="link" href="https://github.com/karrieretutor/jitsi-prom-exporter/issues/3#issuecomment-614909928" target="_blank" rel="noopener"
&gt;ça&lt;/a&gt; [/Edit]&lt;/p&gt;
&lt;p&gt;En revanche, &lt;a class="link" href="https://github.com/xsteadfastx/jitsiexporter" target="_blank" rel="noopener"
&gt;jitsiexporter&lt;/a&gt;, j’ai réussi à le faire fonctionner assez vite ! Et je vous propose qu’on se l’installe ensemble !&lt;/p&gt;
&lt;h2 id="activer-les-statistiques"&gt;Activer les statistiques
&lt;/h2&gt;&lt;p&gt;La première chose à faire et de vérifier dans votre install de Jitsi si l’API REST est activée ou non. Si ce n’est pas le cas, vous pouvez tenter de modifier les propriétés du sip-communicator de videobridge.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;ps -ef | grep jvb
jvb 164 1 0 20:09 ? 00:00:56 java -Xmx3072m [...] --apis=rest,
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Pour être honnête, je ne suis pas encore bien bien sûr à 100% ce qu’il faut faire pour être sûr que c’est actif. La documentation du projet Github de l’exporter n’est pas hyper claire et j’ai lu pas mal d’instruction contradictoire sur les forums&amp;hellip;&lt;/p&gt;
&lt;p&gt;En fin d’article, je vous ai mis deux liens vers la doc officielle de Jitsi à ce sujet.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;vi /etc/jitsi/videobridge/sip-communicator.properties
[...]
org.jitsi.videobridge.ENABLE_STATISTICS=true
org.jitsi.videobridge.STATISTICS_TRANSPORT=muc,colibri
org.jitsi.videobridge.STATISTICS_INTERVAL=1000
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Une fois que c’est bon, un petit curl` vous permettra de vous assurer que tout va bien.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;curl http://127.0.0.1:8080/colibri/stats
{&amp;#34;inactive_endpoints&amp;#34;:0,&amp;#34;inactive_conferences&amp;#34;:0,&amp;#34;total_ice_succeeded_relayed&amp;#34;:0,&amp;#34;total_loss_degraded_participant_seconds&amp;#34;:0,&amp;#34;bit_rate_download&amp;#34;:0,&amp;#34;muc_clients_connected&amp;#34;:1,&amp;#34;total_participants&amp;#34;:0,...
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="installer-lexporter"&gt;Installer l’exporter
&lt;/h2&gt;&lt;p&gt;Maintenant que notre Jitsi nous donne bien des statistiques en local, on va pouvoir commencer à utiliser un exporter pour consommer les métriques périodiquement et les servir au format Prometheus.&lt;/p&gt;
&lt;h3 id="prérequis-pour-la-compilation"&gt;Prérequis pour la compilation
&lt;/h3&gt;&lt;p&gt;D’abord il nous faut go&amp;hellip; Sur un Ubuntu 18.04 ça donne ça :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:longsleep/golang-backports
sudo apt update
sudo apt install golang-go git
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="compiler"&gt;Compiler
&lt;/h3&gt;&lt;p&gt;Ensuite, il faut compiler l’exporter. En théorie, comme Go fait des binaires &amp;ldquo;qui marchent partout&amp;rdquo;, vous pouvez compiler l’exporter sur votre poste et envoyer le binaire sur le serveur jitsi. En théorie&amp;hellip;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;su - jvb
mkdir -p go/src &amp;amp;&amp;amp; mkdir -p go/bin
cd go/src
git clone https://github.com/xsteadfastx/jitsiexporter
cd jitsiexporter
go get ./...
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Si tout se passe bien, un binaire est créé dans &lt;code&gt;~/go/bin&lt;/code&gt;&lt;/p&gt;
&lt;h2 id="tester-lexporter"&gt;Tester l’exporter
&lt;/h2&gt;&lt;p&gt;Maintenant qu’on a un exporter, on va le tester en le lançant à la main, pour valider toute la chaîne. Les paramètres sont assez simples. Il faut renseigner d’un côté l’URL du serveur REST et de l’autre adresse/port sur lesquels on veut que l’exporter accepte les requêtes de Prometheus.&lt;/p&gt;
&lt;p&gt;Par défaut c’est localhost donc il est fort probable que vous vouliez changer ça.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;/usr/share/jitsi-videobridge/go/bin/jitsiexporter --url=&amp;#39;http://127.0.0.1:8080/colibri/stats&amp;#39; --host=192.168.1.100 --port=9700
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="un-service-pour-automatiser-le-démarrage-au-démarrage"&gt;Un service pour automatiser le démarrage au&amp;hellip; démarrage
&lt;/h2&gt;&lt;p&gt;Comme d’habitude, une fois qu’on a l’exporter qui marche oneshot, le mieux c’est quand même d’avoir un service systemd` qui va nous faciliter le démarrage/l’extinction du service :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;cat &amp;gt; /etc/systemd/system/jitsiexporter.service &amp;lt;&amp;lt; EOF
[Unit]
Description=Jitsi videobridge Prometheus Exporter
After=jitsi-videobridge2.service
Requires=jitsi-videobridge2.service
[Service]
User=jvb
Restart=on-failure
ExecStart=/usr/share/jitsi-videobridge/go/bin/jitsiexporter --url=&amp;#39;http://127.0.0.1:8080/colibri/stats&amp;#39; --host=192.168.1.100 --port=9700
[Install]
WantedBy=multi-user.target
EOF
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;systemctl daemon-reload
systemctl enable jitsiexporter
systemctl start jitsiexporter
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="configurer-prometheus"&gt;Configurer Prometheus
&lt;/h2&gt;&lt;p&gt;Vous l’avez compris, il reste donc maintenant à relier Prometheus à notre exporter pour commencer à scrapper des métriques. Ici, il s’agira donc simplement d’ajouter une nouvelle section &amp;ldquo;job&amp;rdquo; dans notre configuration de Prometheus et à redémarrer pour prise en compte.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;vi /usr/share/prometheus/prometheus.yml
[...]
- job_name: &amp;#39;jitsi&amp;#39;
static_configs:
- targets:
- 192.168.1.100:9700 # jitsiexporter for jitsi videobridge
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;systemctl restart prometheus
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="et-le-résultat-"&gt;Et le résultat ?
&lt;/h2&gt;&lt;p&gt;Bon, faut avouer que c’est pas foufou, j’ai eu quelques conférences en 2 semaines (pas beaucoup plus d’une par jour), mais un joli score tout de même cette conf d’1h30 avec au max 10 personnes !&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2020/04/10participants.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Vous savez tout ! Have fun :D&lt;/p&gt;
&lt;h2 id="sources-additionnelles"&gt;Sources additionnelles
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/jitsi/jitsi-videobridge/blob/master/doc/statistics.md" target="_blank" rel="noopener"
&gt;Documentation sur les statistiques sur le site de Jitsi&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/jitsi/jitsi-videobridge/blob/master/doc/rest.md" target="_blank" rel="noopener"
&gt;Documentation sur l’API REST sur le site de Jitsi&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>[Tutoriel] Installer Prometheus/Grafana sans Docker</title><link>https://blog.zwindler.fr/2019/11/12/tutoriel-installer-prometheus-grafana-sans-docker/</link><pubDate>Tue, 12 Nov 2019 07:30:45 +0000</pubDate><guid>https://blog.zwindler.fr/2019/11/12/tutoriel-installer-prometheus-grafana-sans-docker/</guid><description>&lt;img src="https://blog.zwindler.fr/2019/11/grafana_prometheus_proxmox.webp" alt="Featured image of post [Tutoriel] Installer Prometheus/Grafana sans Docker" /&gt;&lt;h2 id="prometheus-et-grafana-dans-docker-quelle-horreur-"&gt;Prometheus et Grafana dans Docker, quelle horreur ?
&lt;/h2&gt;&lt;p&gt;Je sais que certains d’entre vous ne sont pas super fan (euphémisme) de la technologique containers Docker (et je ne parle même pas de Kubernetes, cf &lt;a class="link" href="https://blog.zwindler.fr/2019/09/03/concerning-kubernetes-combien-de-problemes-ces-stacks-ont-generes/" &gt;Concerning Kubernetes&lt;/a&gt;). Pour autant, pas besoin de Docker pour avoir besoin du couple Prometheus / Grafana.&lt;/p&gt;
&lt;p&gt;Prometheus a plein de features sympas (notamment l’auto discovery, le langage de requêtage PromQL, &amp;hellip;). De son côté, Grafana est vraiment top pour ce qui est visualisation rapide provenant de plusieurs sources de données.&lt;/p&gt;
&lt;p&gt;Peut être même que vous avez du Docker (ou même Kubernetes) mais que vous n’avez pas envie d’intégrer la supervision dans votre infra de compute.&lt;/p&gt;
&lt;p&gt;Il y a plein de bonnes raisons pour ça, comme ne pas vouloir héberger la supervision sur l’infra qu’elle est censé surveillée ou encore pour des problématiques de performances, &amp;hellip;&lt;/p&gt;
&lt;p&gt;Avec Docker, lancer Prometheus ou Grafana se fait en une ligne de commande, c’est pour ça qu’on voit cette manière de faire partout. Sans Docker, c’est nécessairement un poil plus compliqué (mais à peine) à faire. Et c’est pourquoi je fais ce petit tuto rapide.&lt;/p&gt;
&lt;h2 id="prometheus"&gt;Prometheus
&lt;/h2&gt;&lt;p&gt;Dans ce tuto, on va partir des sources. Pour &lt;a class="link" href="https://prometheus.io/download/" target="_blank" rel="noopener"
&gt;Prometheus&lt;/a&gt;, vous pourrez trouver un raccourci vers la dernière version &lt;a class="link" href="https://prometheus.io/download/" target="_blank" rel="noopener"
&gt;sur le site officiel&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;On télécharge cette version et on configure un utilisateur exécuter Prometheus&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;wget https://github.com/prometheus/prometheus/releases/download/v2.13.1/prometheus-2.13.1.linux-amd64.tar.gz
tar xzf prometheus-2.13.1.linux-amd64.tar.gz
sudo mv prometheus-2.13.1.linux-amd64/ /usr/share/prometheus
sudo useradd -u 3434 -d /usr/share/prometheus -s /bin/false prometheus
sudo mkdir -p /var/lib/prometheus/data
sudo chown prometheus:prometheus /var/lib/prometheus/data
sudo chown -R prometheus:prometheus /usr/share/prometheus
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Une fois que c’est fait, le mieux c’est de tester que Prometheus &amp;ldquo;fonctionne&amp;rdquo; correctement en le lançant à la main pour voir si le logiciel se lance bien, avec la configuration par défaut.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;/usr/share/prometheus/prometheus --config.file=/usr/share/prometheus/prometheus.yml
[...]
level=info ts=2019-09-20T14:56:18.244Z caller=main.go:768 msg=&amp;#34;Completed loading of configuration file&amp;#34; filename=/usr/share/prometheus/prometheus.yml
level=info ts=2019-09-20T14:56:18.244Z caller=main.go:623 msg=&amp;#34;Server is ready to receive web requests.&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Ici tout s’est bien passé, on peut donc le couper (Ctrl-C) et créer un script SystemD pour pouvoir le démarrer automatiquement avec le serveur.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;sudo vi /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus Server
Documentation=https://prometheus.io/docs/introduction/overview/
After=network-online.target
[Service]
User=prometheus
Restart=on-failure
WorkingDirectory=/usr/share/prometheus
ExecStart=/usr/share/prometheus/prometheus --config.file=/usr/share/prometheus/prometheus.yml
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable prometheus
sudo systemctl start prometheus
sudo systemctl status prometheus
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="grafana"&gt;Grafana
&lt;/h2&gt;&lt;p&gt;Maintenant que c’est fait, on passe à Grafana. Vous allez voir, ça va aussi vite.&lt;/p&gt;
&lt;p&gt;Dans le cas de Grafana, &lt;a class="link" href="https://grafana.com/grafana/download" target="_blank" rel="noopener"
&gt;la méthode mise en avant sur le site officiel&lt;/a&gt; est l’utilisation des packages systèmes (&amp;quot;.deb&amp;quot; pour Debian ou Ubuntu, RPM pour CentOS). Par souci de cohérence dans l’article, je ne vais pas utiliser le .deb et installer le binaire précompilé pour l’installer de la même manière que Prometheus. Cependant, le .deb aurait très bien fait l’affaire (et ça ira plus vite si vous êtes pressés).&lt;/p&gt;
&lt;p&gt;On télécharge donc la version précompilée, on positionne les bons dossiers/binaires/fichiers de config aux bons endroits.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;wget https://dl.grafana.com/oss/release/grafana-6.4.4.linux-amd64.tar.gz
tar -xzf grafana-6.4.4.linux-amd64.tar.gz
sudo useradd -d /usr/share/grafana -s /bin/false grafana
sudo mkdir -p /var/lib/grafana/plugins /etc/grafana /var/log/grafana
sudo chown -R grafana:grafana /var/lib/grafana
sudo mv grafana-6.4.4/ /usr/share/grafana
sudo cp /usr/share/grafana/bin/grafana-server /usr/sbin/
sudo cp /usr/share/grafana/conf/sample.ini /etc/grafana/grafana.ini
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;On configure systemD puis on démarre le service.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;sudo vi /etc/default/grafana-server
GRAFANA_USER=grafana
GRAFANA_GROUP=grafana
GRAFANA_HOME=/usr/share/grafana
LOG_DIR=/var/log/grafana
DATA_DIR=/var/lib/grafana
MAX_OPEN_FILES=10000
CONF_DIR=/etc/grafana
CONF_FILE=/etc/grafana/grafana.ini
RESTART_ON_UPGRADE=true
PLUGINS_DIR=/var/lib/grafana/plugins
PROVISIONING_CFG_DIR=/etc/grafana/provisioning
PID_FILE_DIR=/var/run/grafana
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;sudo vi /etc/systemd/system/multi-user.target.wants/grafana-server.service
[Unit]
Description=Grafana instance
Documentation=http://docs.grafana.org
Wants=network-online.target
After=network-online.target
After=postgresql.service mariadb.service mysql.service
[Service]
EnvironmentFile=/etc/default/grafana-server
User=grafana
Group=grafana
Type=simple
Restart=on-failure
WorkingDirectory=/usr/share/grafana
RuntimeDirectory=grafana
RuntimeDirectoryMode=0750
ExecStart=/usr/sbin/grafana-server \
--config=${CONF_FILE} \
--pidfile=${PID_FILE_DIR}/grafana-server.pid \
cfg:default.paths.logs=${LOG_DIR} \
cfg:default.paths.data=${DATA_DIR} \
cfg:default.paths.plugins=${PLUGINS_DIR} \
cfg:default.paths.provisioning=${PROVISIONING_CFG_DIR}
LimitNOFILE=10000
TimeoutStopSec=20
UMask=0027
[Install]
WantedBy=multi-user.target
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;systemctl start grafana-server
systemctl enable grafana-server
systemctl status grafana-server
[...]
Nov 10 15:40:17 nostromo grafana-server[14606]: t=2019-11-10T15:40:17+0000 lvl=info msg=&amp;#34;Initializing Stream Manager&amp;#34;
Nov 10 15:40:17 nostromo grafana-server[14606]: t=2019-11-10T15:40:17+0000 lvl=info msg=&amp;#34;HTTP Server Listen&amp;#34; logger=http.server address=0.0.0.0:3000 protocol
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="on-cable-le-tout-ensemble"&gt;On cable le tout ensemble
&lt;/h2&gt;&lt;p&gt;Vous avez vu, je vous avais pas menti, c’est assez simple en fait.&lt;/p&gt;
&lt;p&gt;Maintenant que Prometheus et Grafana tournent, on va les coufigurer pour qu’ils parlent ensemble.&lt;/p&gt;
&lt;p&gt;Tout se passe sur l’interface d’administration de Grafana, qui devrait maintenant être accessible à l’URL http://@IP_de_votre_serveur:3000&lt;/p&gt;
&lt;p&gt;Authentifiez vous en tant qu’administrateur. Par défaut à la première instanciation, seul un compte &amp;ldquo;admin&amp;rdquo; est créé, avec le mot de passe hautement sécurisé &amp;ldquo;admin&amp;rdquo;. Heureusement on change ça tout de suite&amp;hellip;&lt;/p&gt;
&lt;p&gt;La dernière étape consiste à simplement se rendre dans la partie administration de Grafana, puis de créer un source de données.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2019/11/grafana_data_source.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Il existe de nombreuses sources de données différentes. Nous dans notre cas, c’est bien une source de type Prometheus qu’on veut créer.&lt;/p&gt;
&lt;p&gt;Renseignez simplement l’URL d’accès à Prometheus (par défaut http://localhost:9090 dans ce tutoriel) et sauvez.&lt;/p&gt;
&lt;p&gt;A partir de maintenant, vous avez un couple Prometheus / Grafana fonctionnel. Vous allez pouvoir commencer à créer des Dashboard.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2019/11/grafana_prometheus_proxmox.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Enjoy !&lt;/p&gt;</description></item><item><title>Superviser des appliances HPE StoreVirtual VSA (LeftHand) avec Nagios/Centron/Shinken</title><link>https://blog.zwindler.fr/2019/01/08/superviser-des-appliances-hp-storevirtual-vsa-lefthand-os-avec-nagios-centron-shinken/</link><pubDate>Tue, 08 Jan 2019 12:45:34 +0000</pubDate><guid>https://blog.zwindler.fr/2019/01/08/superviser-des-appliances-hp-storevirtual-vsa-lefthand-os-avec-nagios-centron-shinken/</guid><description>&lt;img src="https://blog.zwindler.fr/2017/02/hp_vsa-1.webp" alt="Featured image of post Superviser des appliances HPE StoreVirtual VSA (LeftHand) avec Nagios/Centron/Shinken" /&gt;&lt;h2 id="superviser-des-lefthand-"&gt;Superviser des Lefthand ?
&lt;/h2&gt;&lt;p&gt;Dans une vie antérieure (article dans mes tiroirs depuis fin 2015 a priori XD), j’ai eu à gérer, &lt;em&gt;on premise&lt;/em&gt;, du stockage hautement disponible HPE VSA pour mes clusters VMware.&lt;/p&gt;
&lt;p&gt;Si vous êtes ici, c’est sûrement parce que vous aussi, vous avez acheté des LeftHand (StoreVirtual P4000) et/ou des HPE VSA, et que vous voulez les superviser.&lt;/p&gt;
&lt;p&gt;La plupart des tâches d’administration se font depuis la CMC (Centralized Management Console), mais clairement ce n’est pas hyper pratique. La section 7 du manuel StoreVirtual traite de la supervision en général : h20628.www2.hp.com/km-ext/kmcsdirect/emr_na-c04581885-1.pdf (lien mort, pas sauvegardé par Internet Archive).&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2017/02/hpvsa_ftp.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Heureusement, la documentation explicite clairement qu’il est possible d’activer SNMP pour externaliser tout ça.&lt;/p&gt;
&lt;p&gt;A noter, je n’ai pas pu m&amp;rsquo;empêcher de glousser en lisant cette petit phrase dans un manuel d’administration un peu plus ancien, qui dit que vous ne pouvez pas changer, ni même supprimer (#Sécurité), les communautés par défaut :&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2018/12/sanmon.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Section 7 du manuel d’administration &lt;a class="link" href="http://www.hp.com/ctg/Manual/c01865545.pdf" target="_blank" rel="noopener"
&gt;http://www.hp.com/ctg/Manual/c01865545.pdf&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="nagios--centreon--shinken"&gt;Nagios / Centreon / Shinken
&lt;/h2&gt;&lt;p&gt;Pour superviser mes machines dans mes DC « on-premise », j’utilisais Centreon. Tout naturellement je me suis tourné vers Nagios Exchange pour voir s’il n’y avait pas déjà des gens qui avaient fait le travail.&lt;/p&gt;
&lt;p&gt;2 plugins ont attirés mon attention :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://exchange.nagios.org/directory/Plugins/Hardware/Storage-Systems/SAN-and-NAS/check_lefthand-2Epl/details" target="_blank" rel="noopener"
&gt;exchange.nagios.org/directory/Plugins/Hardware/Storage-Systems/SAN-and-NAS/check_lefthand-2Epl/details&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://exchange.nagios.org/directory/Plugins/Hardware/Storage-Systems/SAN-and-NAS/check_lhc/details" target="_blank" rel="noopener"
&gt;exchange.nagios.org/directory/Plugins/Hardware/Storage-Systems/SAN-and-NAS/check_lhc/details&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="prérequis"&gt;Prérequis
&lt;/h2&gt;&lt;p&gt;Le plus récent et le plus téléchargé, &lt;strong&gt;check_lhc&lt;/strong&gt;, nécessite le téléchargement de MIB. Je les avaient trouvé sur &lt;strong&gt;circitor&lt;/strong&gt; (ex. &lt;a class="link" href="http://www.circitor.fr/Mibs/Html/L/LEFTHAND-NETWORKS-NUS-COMMON-CLUSTERING-MIB.php" target="_blank" rel="noopener"
&gt;www.circitor.fr/Mibs/Html/L/LEFTHAND-NETWORKS-NUS-COMMON-CLUSTERING-MIB.php&lt;/a&gt;), puis de les déposer dans votre serveur Nagios/Centreon/Shinken&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;/usr/share/snmp/mibs/
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;J’avais également trouvé des ressources sur le site d’HPE, mais comme ils passent leur temps à le refaire les 3 liens que j’avais sauvegardés sont maintenant HS. Voilà voilà.&lt;/p&gt;
&lt;p&gt;En gros, ce que ça disait, c’est que les MIB sont contenues dans l’installeur, celui qui est utilisé pour instancier les VSA la première fois.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2015/11/01_storevirtual.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2015/11/02_storevirtual.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Fallait le savoir&amp;hellip;&lt;/p&gt;
&lt;h2 id="configurer-snmp"&gt;Configurer SNMP
&lt;/h2&gt;&lt;p&gt;Comme les deux plugins utilisent SNMP, on va&amp;hellip; l’activer. &lt;strong&gt;#ThanksCaptainObvious&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Depuis la CMC, on peut donc configurer nos StoreVirtual pour qu’elles acceptent des connexions SNMP et configurer une communauté (voir &lt;a class="link" href="http://h20628.www2.hp.com/km-ext/kmcsdirect/emr_na-c04581885-1.pdf" target="_blank" rel="noopener"
&gt;le manuel d’admin, page 93&lt;/a&gt;). Clairement, ce n’est pas sorcier.&lt;/p&gt;
&lt;p&gt;Dans le &lt;strong&gt;Management Group&lt;/strong&gt;, on a un menu &lt;strong&gt;Event&lt;/strong&gt;, dans lequel on peut configurer un serveur SMTP (pratique pour recevoir les mails qui m’informe que mon cluster est à plat et que mes données sont définitivement corrompues et que je peux aller pointer à &lt;em&gt;Paul Emploi&lt;/em&gt;).&lt;/p&gt;
&lt;p&gt;Et, &lt;strong&gt;SNMP&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2015/11/03_storevirtual.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;h2 id="checker"&gt;Checker
&lt;/h2&gt;&lt;p&gt;Maintenant que vous avez activé SNMP (avec une communauté bien complexe, readonly et des restrictions IP à vos seuls serveurs de supervision, on est d’accord), on peut voir si ça marche.&lt;/p&gt;
&lt;p&gt;Personnellement j’ai préféré &lt;strong&gt;check_lefthand&lt;/strong&gt;, car la doc est plus fournie et les options plus nombreuses .&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;./check_lefthand.pl -H 10.10.10.16 -C hyperdifficultcommunity
Cowardly exiting, not instructed to check anything!
check_lefthand.pl -H -C [-t timeout] [-p port]
Additional Options:
--module-space
report the available space on each &amp;#39;module&amp;#39; within a management group
--module-status
report on the various status elements for each &amp;#39;module&amp;#39; within a management group
--volume-space
report the available space on each volume within a management group
--volume-status
report on the various status elements for each volume within a management group
--cluster-space
report the available space for each cluster within a management group
--cluster-status
report the status of each cluster within a management group
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Les deux alertes que j’ai mises en place sont l’état du clusters, et le status de mes volumes (synchronisés ou pas entre les 2 salles).&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;centreon$ ./check_lefthand.pl -H 10.10.10.16 -C hyperdifficultcommunity --cluster-status
OK - mgmt group: MyAwesomeHPVSA 5/5 Cluster Managers Active.
centreon$ ./check_lefthand.pl -H 10.10.10.16 -C public --volume-status
OK - mgmt group: MyAwesomeHPVSA 4 Volumes with valid replication and Data Protection.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;A noter, tout n’est pas parfait. Dans certains cas, j’ai remarqué que l’alerte ne se déclenchait pas quand des nœuds étaient DOWN, car le compteur « total » de nœuds décrémentait en même temps que les nœuds tombaient (ce qui est très bête&amp;hellip;).&lt;/p&gt;
&lt;p&gt;Mais c’est quand même un début :)&lt;/p&gt;
&lt;h2 id="bonus--rage"&gt;Bonus : Rage
&lt;/h2&gt;&lt;p&gt;Ouais, je sais&amp;hellip;HPE VSA (maintenant HPe StoreVirtual VSA), quoi. L’alternative « géniale » de HPE à VSAN.&lt;/p&gt;
&lt;p&gt;Ne me blâmez pas&amp;hellip; A l’époque, on m’avait donné le choix entre 2 appliances physiques NetApps &lt;strong&gt;plus chères&lt;/strong&gt; et &lt;strong&gt;même pas hautement disponibles&lt;/strong&gt; (actif/passif) et donc les fameuses HPE VSA Storevirtual. Et puis sur le papier, ça paraissait robuste. C’est basé sur un produit éprouvé, les Lefthands (appliances physiques) et un OS Linux.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;What could go wrong?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Maintenant que je ne m’en occupe plus, je peux dire que c’est grâce à ce superbe outil que j’aurai fais un week end non-stop quasiment sans dormir au téléphone avec des techs HPE et VMware de tout autour du monde (mais je me suis fait payer plus de 25 heures d’astreinte &lt;strong&gt;#youpi&lt;/strong&gt;) parce que les nœuds tombaient les uns après les autres sans raison apparente.&lt;/p&gt;
&lt;p&gt;Pour les curieux, c’était un problème de hotspare qui se mettait en veille et bloquaient les nodes, les uns après les autres, dès qu’une commande « refresh storage usage » était lancée par l’ESXi (automatique ou manuel).&lt;/p&gt;
&lt;p&gt;C’est aussi mon record personnel &lt;strong&gt;du ticket support le plus longtemps&lt;/strong&gt;, tout constructeur/éditeur confondu. Les chiffres sont impressionnants :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;un mois pour trouver un workaround (désactiver les hotspares, #genious)&lt;/li&gt;
&lt;li&gt;plus de 200 emails&lt;/li&gt;
&lt;li&gt;5 mises à jours (dont 4 inutiles)&lt;/li&gt;
&lt;li&gt;3 interventions le soir sur la prod&lt;/li&gt;
&lt;li&gt;Et last but not least : &lt;strong&gt;2 ans&lt;/strong&gt; pour trouver le fix (alors que le problème était détecté puisqu’on savait qu’il suffisait de désactiver les hotspares).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;&lt;b&gt;DEUX&amp;hellip; ANS&amp;hellip;&lt;/b&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Au final, je ne suis même pas vraiment sûr que le problème soit fixé.&lt;/p&gt;
&lt;p&gt;Je ne suis plus sûr de rien, à part du niveau de compétence de HPE sur le sujet des serveurs et du stockage.&lt;/p&gt;
&lt;p&gt;Mais qui peut les blâmer, ce n’est pas leur cœur de métier après tout. &lt;strong&gt;#ohwait&lt;/strong&gt;&lt;/p&gt;</description></item></channel></rss>