<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Systemd on Zwindler's Reflection</title><link>https://blog.zwindler.fr/tags/systemd/</link><description>Recent content in Systemd on Zwindler's Reflection</description><generator>Hugo -- gohugo.io</generator><language>fr-fr</language><copyright>Licensed under CC BY-SA 4.0</copyright><lastBuildDate>Tue, 03 Jan 2017 13:00:18 +0000</lastBuildDate><atom:link href="https://blog.zwindler.fr/tags/systemd/index.xml" rel="self" type="application/rss+xml"/><item><title>Emergency mode : point de montage mal ordonné par systemd-fstab-generator</title><link>https://blog.zwindler.fr/2017/01/03/emergency-boot-point-de-montage-mal-ordonne-systemd/</link><pubDate>Tue, 03 Jan 2017 13:00:18 +0000</pubDate><guid>https://blog.zwindler.fr/2017/01/03/emergency-boot-point-de-montage-mal-ordonne-systemd/</guid><description>&lt;img src="https://blog.zwindler.fr/2016/12/mode_emerg_short.webp" alt="Featured image of post Emergency mode : point de montage mal ordonné par systemd-fstab-generator" /&gt;&lt;h2 id="pourquoi-mon-os-passe-en-emergency-lorsque-je-rajoute-un-montage-bind-ou-automount-dans-la-fstab-"&gt;Pourquoi mon OS passe en emergency lorsque je rajoute un montage bind ou automount dans la fstab ?
&lt;/h2&gt;&lt;p&gt;C’est un problème que j’ai rencontré récemment. Nous avons progressivement migré toutes nos machines sous RHEL et CentOS 7, et nous avons essuyés par mal de plâtres dans migration, notamment par manque de connaissances de la nouvelles version qui amène son lot de nouveautés comme XFS, firewalld et surtout systemd.&lt;/p&gt;
&lt;p&gt;Un des problèmes rencontrés récemment était que sur une de nos machines, lorsqu’un reboot avait lieu, elle passait systématiquement en mode Maintenance (Emergency mode en anglais), mais que nous pouvions contourner le problème avec un simple ctrl + D.&lt;/p&gt;
&lt;h2 id="symptôme"&gt;Symptôme
&lt;/h2&gt;&lt;p&gt;En réalité, ce problème n’est apparu qu’après mise en place d’un montage de type &lt;em&gt;bind&lt;/em&gt; ou &lt;em&gt;automount&lt;/em&gt; sur un serveur RHEL / CentOS 7+ (ou tout autre Linux avec systemd). Il n’y a pas de messages particuliers qui indique une erreur.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2016/12/mode_emerg.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;Après analyse des logs, on pouvait lire les entrées suivantes dans &lt;em&gt;journalctl&lt;/em&gt; (comme conseillé par le mode Emergency) :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;journalctl -xb
[...]
-- Le chargement de l&amp;#39;espace utilisateur a nécessité 3905312 microsecondes.
déc. 27 02:00:18 srv01 systemd[1]: Received SIGRTMIN+20 from PID 272 (plymouthd).
déc. 27 02:00:18 srv01 systemd[1]: Received SIGRTMIN+21 from PID 272 (plymouthd).
déc. 27 13:51:22 srv01 systemd[1]: Found ordering cycle on application-share\x2dbind.mount/start
déc. 27 13:51:22 srv01 systemd[1]: Found dependency on application-share.mount/start
déc. 27 13:51:22 srv01 systemd[1]: Found dependency on network-online.target/start
déc. 27 13:51:22 srv01 systemd[1]: Found dependency on network.target/start
déc. 27 13:51:22 srv01 systemd[1]: Found dependency on NetworkManager.service/start
déc. 27 13:51:22 srv01 systemd[1]: Found dependency on basic.target/start
déc. 27 13:51:22 srv01 systemd[1]: Found dependency on sysinit.target/start
déc. 27 13:51:22 srv01 systemd[1]: Found dependency on rhel-autorelabel-mark.service/start
déc. 27 13:51:22 srv01 systemd[1]: Found dependency on local-fs.target/start
déc. 27 13:51:22 srv01 systemd[1]: Found dependency on application-share\x2dbind.mount/start
déc. 27 13:51:22 srv01 systemd[1]: Breaking ordering cycle by deleting job application-share.mount/start
déc. 27 13:51:22 srv01 systemd[1]: Job application-share.mount/start deleted to break ordering cycle starting with application-share\x2dbind.mount/start
déc. 27 13:51:22 srv01 systemd[1]: Started Commit a transient machine-id on disk.
-- Subject: L&amp;#39;unité (unit) systemd-machine-id-commit.service a terminé son démarrage
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Dans notre cas, dans le fichier /etc/fstab, il existe 2 entrées dépendantes l’une de l’autre avec un montage samba distant et un montage de type « bind » :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;vi /etc/fstab
[...]
//samba.example.org/share /application/share/ cifs _netdev,auto,users,credentials=/application/.smbcred,context=system_u:object_r:svirt_sandbox_file_t:s0 0 0
[...]
/application/share/ /application/share-bind/ none bind 0 0
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="contournement"&gt;Contournement
&lt;/h2&gt;&lt;p&gt;Un simple appui sur les touches Ctrl + D permet de passer outre l’erreur mais les points de montage ne sont pas disponibles à la fin de séquence de boot. Il est possible de le remonter sans problèmes particuliers avec la commande &lt;em&gt;mount&lt;/em&gt; classique.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;sudo mount -a
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="cause"&gt;Cause
&lt;/h2&gt;&lt;p&gt;Le problème est très bien expliqué dans &lt;a class="link" href="https://web.archive.org/web/20160604102941/https://copyninja.info/blog/systemd_automount_entry.html" target="_blank" rel="noopener"
&gt;cet article en anglais (lien mort, j&amp;rsquo;utilise Internet Archive)&lt;/a&gt;. Comme je l’annonçais en introduction, systemd a changé beaucoup de choses dans la façon dont le système traite le démarrage.&lt;/p&gt;
&lt;p&gt;Il existe des sous fonctions de systemd, notamment &lt;em&gt;systemd systemd.mount&lt;/em&gt;, &lt;em&gt;systemd-fstab-generator&lt;/em&gt; et &lt;em&gt;systemd.automount&lt;/em&gt; qui se chargent de traiter le montage des filesystems à la manière de n’importe quel autre service (appelés « units » dans la terminologie systemd).&lt;/p&gt;
&lt;p&gt;Cependant, par défaut, il semble que le systemd-fstab-generator &lt;strong&gt;ne tient pas compte de l’ordre dans lesquels les filesystems sont déclarés&lt;/strong&gt; ce qui peut provoquer des problèmes d’ordonnancement des montages !&lt;br&gt;
Si c’est le cas, systemd préfère donc passer en mode Emergency et bloquer la séquence boot jusqu’à intervention d’un administrateur.&lt;/p&gt;
&lt;p&gt;On peut confirmer le problème en allant lire les fichiers units générés par systemd-fstab-generator. C’est fichiers se trouvent dans &lt;em&gt;/run/systemd/generator&lt;/em&gt; :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;cd /run/systemd/generator/
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;cat application-share.mount
# Automatically generated by systemd-fstab-generator
[Unit]
SourcePath=/etc/fstab
Documentation=man:fstab(5) man:systemd-fstab-generator(8)
Before=remote-fs.target
[Mount]
What=//samba.example.org/share
Where=/application/share
Type=cifs
Options=_netdev,auto,users,credentials=/application/.smbcred,context=system_u:object_r:svirt_sandbox_file_t:s0
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;cat application-share\\x2dbind.mount
# Automatically generated by systemd-fstab-generator
[Unit]
SourcePath=/etc/fstab
Documentation=man:fstab(5) man:systemd-fstab-generator(8)
Before=local-fs.target
[Mount]
What=/application/share/
Where=/application/share-bind/
Type=none
Options=bind
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Dans la philosophie systemd, il est nécessaire, quelque soit l’unit concerné, qu’il soit traité &lt;strong&gt;après&lt;/strong&gt; ses dépendances au boot, et &lt;strong&gt;avant&lt;/strong&gt; à l’extinction de la machine.&lt;/p&gt;
&lt;p&gt;Ici, il serait nécessaire d’avoir dans les fichiers application-share.mount et application-share\x2dbind.mount la directive &lt;em&gt;After=&lt;/em&gt; ou &lt;em&gt;Require=&lt;/em&gt;, ce qui n’est pas le cas !&lt;/p&gt;
&lt;h2 id="solution"&gt;Solution
&lt;/h2&gt;&lt;p&gt;Pour résoudre le problème, il existe une directive &lt;em&gt;x-systemd.requires=/path/to/dependancy&lt;/em&gt; à ajouter dans les options du filesystem qui doit être monter &lt;strong&gt;après&lt;/strong&gt; un autre filsystem. De cette manière, le systemd-fstab-generator est capable de créer les « units systemd » disposant des bonnes directives After= et Requires=.&lt;/p&gt;
&lt;p&gt;On doit donc modifier le fichier /etc/fstab de la façon suivante :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;vi /etc/fstab
[...]
//samba.example.org/share /application/share/ cifs _netdev,x-systemd.requires=/application,auto,users,credentials=/application/.smbcred,context=system_u:object_r:svirt_sandbox_file_t:s0 0 0
[...]
/application/share/ /application/share-bind/ x-systemd.requires=/application/share bind 0 0
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;On peut vérifier que la commande est bien prise en compte avec la commande suivante :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;systemctl show -p After application-share.mount
After=systemd-journald.socket network.target application.mount remote-fs-pre.target system.slice network-online.target -.mount
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Ici on voit que /application/share nécessite que la couche réseau soit démarrée et que /application soit monté. Idem pour le montage « bind » :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;systemctl show -p After application-share\\x2dbind.mount
After=application-share.mount network.target systemd-journald.socket application.mount network-online.target system.slice local-fs-pre.target remote-fs-pre.target -.mount
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;De même, si on lit les fichiers units générés, on retrouve bien les directives After= et Requires= attendues.&lt;/p&gt;</description></item><item><title>[Tutoriel] Shinken 2.4 sur CentOS/RHEL 7 – partie 3</title><link>https://blog.zwindler.fr/2015/09/22/tutoriel-shinken-2-4-sur-centosrhel-7-partie-3/</link><pubDate>Tue, 22 Sep 2015 16:32:00 +0000</pubDate><guid>https://blog.zwindler.fr/2015/09/22/tutoriel-shinken-2-4-sur-centosrhel-7-partie-3/</guid><description>&lt;img src="https://blog.zwindler.fr/2015/09/shinken.webp" alt="Featured image of post [Tutoriel] Shinken 2.4 sur CentOS/RHEL 7 – partie 3" /&gt;&lt;p&gt;Cet article fait parti d’une série d’articles (au moins 3) que je vais publier sur le sujet et que j’ai séparé pour les rendre un peu plus digestes. Je vous conseille quand même de ne pas en sauter pour bien comprendre de quoi on parle ;-) :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.zwindler.fr/2015/09/22/tutoriel-shinken-2-4-sur-centosrhel-7-partie-1/" &gt;Partie 1 : Présentation de Shinken&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.zwindler.fr/2015/09/22/tutoriel-shinken-2-4-sur-centosrhel-7-partie-2/" &gt;Partie 2 : Installation de Shinken 2.4 sur RHEL/CentOS 7&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://blog.zwindler.fr/2015/09/22/tutoriel-shinken-2-4-sur-centosrhel-7-partie-3/" &gt;Partie 3 : Configuration initiale de Shinken 2.4 sur RHEL/CentOS 7&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="les-modules"&gt;Les modules
&lt;/h2&gt;&lt;p&gt;L’ensemble des modules et en particulier le broker n’a donc aucun module d’activé. Or les interfaces graphiques sont gérées par des modules du broker pour ne citer qu’eux.&lt;/p&gt;
&lt;h3 id="les-modules-et-shinkenio"&gt;Les modules et shinken.io
&lt;/h3&gt;&lt;p&gt;Par convention (ce n’était pas forcément le cas dans les précédentes versions), la configuration des modules est définie dans des fichiers de configurations individuels qui seront stockés dans le sous dossier modules de &lt;strong&gt;/etc/shinken/&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;On peut trouver les fichiers liés aux modules dans le répertoire &lt;strong&gt;/var/lib/shinken/modules/&lt;/strong&gt; (par défaut, mais vous pouvez le modifier dans le fichier &lt;strong&gt;shinken.cfg&lt;/strong&gt; ou dans les « .ini » des démons).&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;cat /etc/shinken/modules/sample.cfg
# Here is a sample module that will do nothing :)
#define module{
# module_name module-sample
# module_type module-sample
# key1 value1
# key2 value2
ll /var/lib/shinken/modules
total 24
drwxr-xr-x 2 shinkn shinkn 4096 17 sept. 14:34 dummy_arbiter
drwxr-xr-x 2 shinkn shinkn 4096 17 sept. 14:34 dummy_broker
drwxr-xr-x 2 shinkn shinkn 4096 17 sept. 14:34 dummy_broker_external
drwxr-xr-x 2 shinkn shinkn 4096 17 sept. 14:34 dummy_poller
drwxr-xr-x 2 shinkn shinkn 4096 17 sept. 14:34 dummy_scheduler
-rw-r--r-- 1 shinkn shinkn 919 17 sept. 14:34 __init__.py
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Autant dire que pour l’instant on ne peut pas faire grand chose !&lt;/p&gt;
&lt;p&gt;C’est un choix technique qui a été fait à partir de la version 2 (si je ne m’abuse) et qui permet de n’avoir que ce dont on a vraiment besoin, ce qui est une très bonne pratique.&lt;/p&gt;
&lt;p&gt;Pour autant, pour éviter de trop alourdir le processus d’installation de multiples modules, l’équipe a mis au point un catalogue d’extensions qui permet d’installer les modules manquants à l’aide d’une simple ligne de commande, ce qui est très pratique.&lt;/p&gt;
&lt;p&gt;La première fois, il faut commencer par « initialise » notre Shinken 2.4, avec la commande suivante :&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;shinken --init
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Le site &lt;a class="link" href="http://shinken.io/browse/modules/updated" target="_blank" rel="noopener"
&gt;shinken.io&lt;/a&gt; référence à date pas moins de 138 packages dont les fameux modules qui nous manquent.&lt;/p&gt;
&lt;h3 id="premier-module--les-logs-comme-nagioslog"&gt;Premier module : les logs comme nagios.log
&lt;/h3&gt;&lt;p&gt;Pour installer le module de log plat à la mode « Nagios », il faut installer simple-log.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;shinken install simple-log
Grabbing : simple-log
OK simple-log
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Pas mal hein?&lt;/p&gt;
&lt;p&gt;Si vous avez l’erreur suivante qui apparaît, c’est que vous n’avez pas fait la commande shinken init à l’étape précédente.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;shinken install simple-log
[1442761511] ERROR: [Shnken] Cannot load cli commands, missing paths or cli entry in the config
[1442761511] ERROR: [Shnken] CLI loading not done: missing configuration data. Please run --init
shinken --init
Creating ini section paths
Creating ini section shinken.io
Saving the new configuration file /root/.shnken.ini
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="installer-la-webui-linterface-graphique-officielle-du-projet"&gt;Installer la WebUI, l’interface graphique officielle du projet
&lt;/h3&gt;&lt;p&gt;Pour installer l’interface graphique « officielle » (aka la WebUI), il faut se rendre sur la page &lt;a class="link" href="http://shinken.io/package/webui2" target="_blank" rel="noopener"
&gt;suivante&lt;/a&gt; (et la documentation qui détaille sont installation sont disponibles &lt;a class="link" href="https://github.com/shinken-monitoring/mod-webui/wiki/Installation" target="_blank" rel="noopener"
&gt;ici&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Toutes les dépendances python peuvent être installées via pip et le fichier requirements.txt. Pour mongodb, je vous l’ai déjà fait installer un peu plus tôt donc ça devrait déjà être fait (enfin&amp;hellip; si vous avez suivi&amp;hellip; sinon :-p retournez à l’article précédent).&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;pip install -r https://raw.githubusercontent.com/shinken-monitoring/mod-webui/develop/requirements.txt
shinken install webui2
Grabbing : webui2
OK webui2
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Par défaut, le fichier de configuration &lt;strong&gt;webui2.cfg&lt;/strong&gt; est créé dans le dossier &lt;strong&gt;/etc/shinken/modules/&lt;/strong&gt; et les fichiers du modules ont été déposés dans &lt;strong&gt;/var/lib/shinken/modules/&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Pour que notre authentification par fichier &lt;strong&gt;htpasswd&lt;/strong&gt; soit prise en compte, il faut dé-commenter la ligne contenant le paramètre &lt;strong&gt;htpasswd_file&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;[Deprecated]Vous devriez aussi changer tout de suite le paramètre &lt;strong&gt;auth_secret&lt;/strong&gt; dans le fichier de configuration &lt;strong&gt;webui2.cfg&lt;/strong&gt;. Remplacez CHANGEME par la valeur que vous voulez.&lt;/p&gt;
&lt;p&gt;Historiquement il fallait changer soit même le paramètre &lt;strong&gt;auth_secret&lt;/strong&gt; dans le fichier de configuration mais cette option a été remplacée par un fichier autogénéré. Cette méthode est plus sécurisante car elle évite d’oublier de le faire ;-).&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;htpasswd_file /etc/shinken/htpasswd.users
[...]
# Authentication secret for session cookie
#auth_secret BOBLEPONGE
# ; CHANGE THIS or someone could forge cookies
auth_secret_file /var/lib/shinken/auth_secret
[...]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Pour l’instant, seule l’authentification par Apache htpasswd est activé (vu qu’on vient de le décommenter). On pourra en rajouter d’autres par la suite mais pour faire simple, on va juste y ajouter un compte pour commencer.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;htpasswd -c /etc/shinken/htpasswd.users admin
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Ensuite on démarre la base mongodb&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;systemctl enable mongod
systemctl start mongod
&lt;/code&gt;&lt;/pre&gt;&lt;h3 id="câbler-le-tout"&gt;Câbler le tout
&lt;/h3&gt;&lt;p&gt;On a installé deux modules, mais aucun des deux n’ont été reliés au broker : ils ne seront pas utilisés au démarrage. On modifie donc la configuration du broker en conséquence.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;vi /etc/shinken/brokers/broker-master.cfg
modules simple-log,webui2
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Pour plus de détails sur la configuration du broker, je vous renvoie vers la page &lt;a class="link" href="https://shinken.readthedocs.org/en/latest/08_configobjects/broker.html" target="_blank" rel="noopener"
&gt;broker&lt;/a&gt; de la documentation officielle.&lt;/p&gt;
&lt;p&gt;Redémarrez l’outil pour prendre en compte la modification de configuration et connectez vous à l’URL &lt;code&gt;http://@IP_shinken:7767&lt;/code&gt;&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;systemctl restart shinken
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2015/09/shinken2.avif%22"
loading="lazy"
&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Yata !&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2015/09/03_shinken.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Le dashboard. Mais pour l’instant il n’y a pas grand chose !&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="en-cas-de-problèmes"&gt;En cas de problèmes
&lt;/h2&gt;&lt;p&gt;Par défaut, les logs sont stockés dans le répertoire &lt;strong&gt;/var/log/shinken/&lt;/strong&gt;, avec un fichier par démon.&lt;/p&gt;
&lt;p&gt;Ils sont généralement assez détaillés et on peut moduler le niveau de détails dans les fichiers de configuration des démons que j’ai présenté un peu plus tôt.&lt;/p&gt;
&lt;p&gt;Dans le cas où la configuration (&lt;strong&gt;shinken.cfg&lt;/strong&gt; et tous les autres .cfg qui en découlent) contiendrait une erreur, l’arbiter plantera au démarrage et les informations sur son plantage seront contenues dans le fichier &lt;strong&gt;/tmp/bad_start_for_arbiter&lt;/strong&gt;. Ça peut être utile.&lt;/p&gt;
&lt;h2 id="aller-plus-loin"&gt;Aller plus loin
&lt;/h2&gt;&lt;p&gt;Ça y est. Votre nouvel outil de supervision fonctionne et vous disposez d’une interface graphique pour voir ce qu’il s’y passe.&lt;/p&gt;
&lt;p&gt;Voici quelques pistes pour réellement terminer le travail que vous venez de commencer :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;D’abord vous pourriez commencer par ajouter des plugins et quelques serveurs à votre configuration pour voir comment Shinken réagit quand on lui donne un peu de travail. Et pourquoi ne pas vous économiser du travail de configuration en utilisant &lt;a class="link" href="http://shinken.io/browse/packs/updated" target="_blank" rel="noopener"
&gt;les packs&lt;/a&gt;, dans ce but ultime d’automatiser toujours plus (pour travailler moins) ?&lt;/li&gt;
&lt;li&gt;Ensuite, vous pourriez ajouter des modules à la WebUI, comme par exemple &lt;a class="link" href="http://shinken.io/package/ui-graphite" target="_blank" rel="noopener"
&gt;ui-graphite&lt;/a&gt; ou &lt;a class="link" href="http://www.shinken.io/package/ui-pnp" target="_blank" rel="noopener"
&gt;ui-pnp&lt;/a&gt; pour ajouter la gestion des graphes dans votre WebUI.&lt;/li&gt;
&lt;li&gt;Enfin, vous pourriez vous pencher sur les aspects &lt;a class="link" href="https://shinken.readthedocs.org/en/latest/06_medium/high-availability.html" target="_blank" rel="noopener"
&gt;de haute disponibilité, de répartition de charge&lt;/a&gt; et de &lt;a class="link" href="https://shinken.readthedocs.org/en/latest/07_advanced/distributed-with-realm.html" target="_blank" rel="noopener"
&gt;gestion des royaumes&lt;/a&gt;, histoire de répondre à des problématiques plus complexe ?&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>