Administrer son serveur CentOS avec Cockpit
Cockpit ?
Une fois son serveur installé et sécurisé, il peut être pratique d'avoir un outil permettant de rapidement connaître son état de santé général. Connaître l'utilisation CPU, disque, réseau, etc.
Depuis que j'utilise CentOS 7, j'ai découvert Cockpit-project, une interface web pour administrer son serveur. Compatible d'après le site officiel avec :
- Fedora
- ReadHat
- CentOS
- Debian
- Ubuntu
- ArchLinux
Ça fait une bonne petite liste ! Bon, précédemment j'avais essaye de l'installer sur un serveur sous Debian, mais j'avais rencontré plusieurs problèmes.
Installation
On commence par installer et activer Cockpit.
- Pour CentOS :
yum install cockpit cockpit-shell cockpit-storaged -y
yum install cockpit-docker --nodeps -y
sudo systemctl enable --now cockpit.socket
- Pour Debian (8.x) :
echo "deb http://repo-cockpitproject.rhcloud.com/debian/ jessie main" >> /etc/apt/sources.list
sudo apt-key adv --keyserver sks-keyservers.net --recv-keys F1BAA57C
sudo apt-get update
sudo apt-get install cockpit -y
sudo systemctl enable cockpit.socket
sudo systemctl start cockpit.socket
- Pour Ubuntu :
sudo add-apt-repository ppa:cockpit-project/cockpit
sudo apt-get update
sudo apt-get install cockpit
sudo systemctl enable --now cockpit.socket
Puis, si vous utilisez un pare-feu (c'est quand même mieux !), il faut ouvrir le port 9090.
- Pour les utilisateurs de
firewalld
:
sudo firewall-cmd --permanent --zone=public --add-service=cockpit
sudo firewall-cmd --reload
- Pour les utilisateurs de
iptables
:
sudo iptables -t filter -A INPUT -i eth0 -p tcp --dport 9090 -m state --state NEW,ESTABLISHED -j ACCEPT
sudo iptables -t filter -A OUTPUT -o eth0 -p tcp --sport 9090 -m state --state ESTABLISHED -j ACCEPT
L'interface d'administration de Cockpit est accessible depuis l'IP publique de votre serveur, sur le port 9090.
Les identifiants de connexion sont ceux de votre utilisateur local.
Reverse proxy
Mes services docker sont derrière un reverse proxy, qui me permet d'utiliser des (sous) noms de domaines à la place des ports. C'est plus pratique pour se rappeler des différents services, mais surtout ça permet de ne pas être bloqué par un filtrage de la connexion.
Par exemple, au travail ma connexion n'autorise que le port 80 et 443 (http et https). Il m'était donc impossible d'accéder à cockpit.
Le reverse proxy docker que j'utilise permet d'ajouter une configuration à celle par défaut. J'y ai donc ajouté la configuration suivante, afin de pouvoir accéder à cockpit avec l'URL cockpit.lmilcent.com.
# Cockpit-project
upstream cockpit {
server 163.172.28.201:9090;
}
server {
listen 80;
server_name cockpit.lmilcent.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443;
server_name cockpit.lmilcent.com;
ssl on;
ssl_certificate /etc/nginx/certs/cockpit/rootCA.crt;
ssl_certificate_key /etc/nginx/certs/cockpit/rootCA.key;
proxy_ssl_verify off;
location / {
proxy_http_version 1.1;
proxy_buffering off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
# needed for websocket
proxy_set_header Upgrade "websocket";
proxy_set_header Connection "upgrade";
# Pass ETag header from cockpit to clients. See: https://github.com/cockpit-project/cockpit/issues/5239
gzip off;
proxy_pass https://163.172.28.201:9090;
}
}
Attention : Les certificats doivent être accessibles par le conteneur nginx, il faut donc lui ajouter des volumes :
-v /home/proxy/my_proxy.conf:/etc/nginx/conf.d/my_proxy.conf:ro \
-v /etc/ssl/certs/chained.pem:/etc/ssl/certs/chained.pem \
-v /etc/ssl/certs/dhparam.pem:/etc/ssl/certs/dhparam.pem \
Quelques captures d'écran
- La page de login
- Page d'accueil
- Détails de la RAM
Parlons de la RAM
Comme vous, peut-être, j'ai tout de suite remarqué que ma RAM était presque toujours à 100%.
En fait, il se trouve que Linux ajoute en cache automatiquement des fichiers souvent utilisés :
Disk caching makes the system much faster and more responsive
Source, article clair, simple et intéressant que je vous recommande (en Anglais).