Mesurer la consommation électrique d’un serveur

Cet article décrit une astuce très simple permettant à un administrateur système d’évaluer l’impact environnemental de la phase d’usage de son serveur.

À partir de sa version 7, l’interface iDRAC d’un serveur de la marque Dell permet de connaître deux informations de base :

  1. la consommation électrique totale depuis le dernier reset de la métrique (SNMP OID 1.3.6.1.4.1.674.10892.5.4.600.60.1.7 powerUsageCumulativeWattage )
  2. la date du dernier reset de la métrique (SNMP OID 1.3.6.1.4.1.674.10892.5.4.600.60.1.8 powerUsageCumulativeWattageStartDateName)
    au formta suivant "20190409161620.000000-000"

On peut évaluer une consommation en kWh par année à partir de ces deux informations avec le calcul suivant :

Conso = P x 31536000 / S / 1000

Conso désigne une consommation moyenne par en en kWh.
P est l’utilisation électrique cumulée en Watt durant les S dernières secondes.
31536000 est le nombre de secondes dans une années

Voici comment récupérer ces informations en bash :

Calcul du temps passé en heures :

my_idrac=mon.serveur-idrac.org
S=$(( $(date +%s --date $(snmpwalk -c public -v 2c $my_idrac 1.3.6.1.4.1.674.10892.5.4.600.60.1.8 | awk '{print $NF}' | awk '{print substr($1, 2, 8)}'))  ))

Récupération de la mesure :

P=$(snmpwalk -c public -v 2c $my_idrac 1.3.6.1.4.1.674.10892.5.4.600.60.1.7 | awk '{print $NF}')

Enfin, la ligne suivante donne une commande unique évaluant la consommation annuelle :

echo $(( $(snmpwalk -c public -v 2c ${my_idrac} 1.3.6.1.4.1.674.10892.5.4.600.60.1.7 | awk '{print $NF}') * 31536 /  ( $(date +%s) - $(date +%s --date $(snmpwalk -c public -v 2c ${my_idrac} 1.3.6.1.4.1.674.10892.5.4.600.60.1.8 | awk '{print $NF}' | awk '{print substr($1, 2, 8)}' )) ) )) "kWh/an" 

La base de donnée EcoInvent propose le facteur d’impact de 0.119kgCO2 par kWh. À vous d’évaluer l’impact.