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 de login de Cockpit

  • Page d'accueil

Page d'accueil de Cockpit

  • Détails de la RAM

Détails de la RAM sur Cockpit

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).