Ubuntu: phpsysinfo mit S.M.A.R.T, lm-sensors und hddtemp
Um die Plugins für phpsysinfo unter Ubuntu Server 13.10 zu verwenden, ist zunächst einige Vorarbeit notwendig.
Da meine Serverinstallation aber – abgesehen von einem 20×4 LCD – „faceless“ installiert ist, möchte ich schon die Möglichkeit haben, ein paar Informationen über die Webseite zu bekommen.
Meine verwendeten Plugins:
lm-sensors
Installation:
sudo apt-get install lm-sensors
Konfiguration:
sudo sensors detect
Alle Fragen soweit mit YES weiterklicken und am Ende die benötigten Module in /etc/modules eintragen lassen. Bei Problemen mit den Modulen, kann man auch mal mit der Reihenfolge der Module experimentieren.
Verwendung in phpsysinfo:
vi /etc/phpsysinfo/config.php
etwa bei Zeile 160
den Eintrag define(‚PSI_SENSOR_PROGRAM‘, false); ändern zu define(‚PSI_SENSOR_PROGRAM‘, ‚LMSensors‘);
und im folgenden Abschnitt prüfen ob dort das hier steht:
define(‚PSI_SENSOR_ACCESS‘, ‚command‘);
hddtemp
Installation:
apt-get install hddtemp
Konfiguration:
entweder mit dpkg-reconfigure hddtemp oder vi /etc/default/hddtemp
———-
RUN_DAEMON=“true“
DISKS_NOPROBE=““
INTERFACE=“127.0.0.1″
PORT=“7634″
RUN_SYSLOG=“0″
OPTIONS=““
Damit wird hddtemp als Dienst gestartet und ist über tcp 127.0.0.1:7634 für phpsysinfo erreichbar.
Verwendung in phpsysinfo:
vi /etc/phpsysinfo/config.php
etwa bei Zeile 176 Abschnitt Hddtemp program
define(‚PSI_HDD_TEMP‘, ‚tcp‘);
S.M.A.R.T
Um das SMART-Plugin verwenden zu können, müssen zunächst die smartmontools installiert werden:
sudo apt-get install smartmontools
Jetzt müsst ihr feststellen, wie die Festplatte angesprochen werden kann.
IDE Platten sind in der Regel mit /dev/hda /dev/hdb, … bezeichnet.
SCSI und SATA Platten mit /dev/sda, /dev/sdb, …
In meinem Falle ist es /dev/sda
Normalerweise kann man das mit ‚df -h‘ prüfen. Da ich aber LVM verwende, bekomme ich dort nicht wirklich etwas brauchbares für SMART angezeigt.
Wenn man garkeine Idee bei LVM hat, kann man auch folgendes probieren:
ls -al /dev/mapper/
lrwxrwxrwx 1 root root 7 Dez 2 22:52 plexone–vg-root -> ../dm-0
lrwxrwxrwx 1 root root 7 Dez 2 22:52 plexone–vg-swap_1 -> ../dm-1
Und tatsächlich ist /dev/dm-0 kooperativ 🙂
smartctl -a -d ata /dev/dm-0
bringt etwas wie:
——————schnipp —————————
smartctl 6.2 2013-04-20 r3812 [x86_64-linux-3.11.0-12-generic] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF INFORMATION SECTION ===
Model Family: Seagate Barracuda 7200.10
Device Model: ST3250310AS
Serial Number: 6RYP30KE
Firmware Version: 4.ADA
User Capacity: 250.000.000.000 bytes [250 GB]
Sector Size: 512 bytes logical/physical
Device is: In smartctl database [for details use: -P show]
ATA Version is: ATA8-ACS (minor revision not indicated)
SATA Version is: SATA 2.5, 3.0 Gb/s
Local Time is: Mon Dec 2 23:38:38 2013 CET
SMART support is: Available – device has SMART capability.
SMART support is: Enabled
——————schnapp —————————
Allerdings musste ich hier schon den Plattentyp mit geben.
mit /dev/sda geht es bei der gleichen Platte auch ohne den Typ anzugeben:
smartctl -a /dev/sda
Erlaubte/Bekannte Plattentypen:
ata, scsi, sat, marvell, 3ware,N, hpt;L/M, cciss;N und hpt,L/M/N
Im Heimgebrauch sollten mit ata und scsi eigentlich alle gängigen Plattentypen abgehandelt werden können.
Ist SMART zwar ‚available‘ aber steht auf Disabled, kann man versuche das so zu ändern:
smartctl -s on -a /dev/sda
Verwendung in phpsysinfo:
In /usr/share/phpsysinfo/data/ muss eine Datei angelegt werden, die nach dem Format SMART{Plattennummer}.txt benannt wird. Bei mir ist das
/usr/share/phpsysinfo/data/SMART0.txt
Diese Datei muss noch mit Inhalt gefüllt werden:
smartctl –all –device ata /dev/sda > /usr/share/phpsysinfo/data/SMART0.txt
Nächste Anpassung:
vi /usr/share/phpsysinfo/plugins/SMART/class.SMART.inc.php
Dort in Zeile 60 steht:
if (CommonFunctions::executeProgram(’smartctl‘, ‚–all‘.((PSI_PLUGIN_SMART_DEVICE) ? ‚ –device ‚.PSI_PLUGIN_SMART_DEVICE : “).‘ ‚.$disk, $buffer, PSI_DEBUG)) {
Das ist zu ändern in:
if (CommonFunctions::executeProgram(’sudo‘, ‚/usr/sbin/smartctl –all ‚.((PSI_PLUGIN_SMART_DEVICE) ? ‚ –device ‚.PSI_PLUGIN_SMART_DEVICE : “).‘ ‚.$disk, $buffer, PSI_DEBUG)) {
Der Unterschied ist nur der erste Teil:
’smartctl‘, ‚–all‘ wird zu ’sudo‘, ‚/usr/sbin/smartctl –all ‚
Testen ob das überhaupt geht kann man mit
sudo /usr/sbin/smartctl –all –device ata /dev/sda
Die Anpassung oben macht im Prinzip nicht anderes.
Jetzt muss die Webuser-Gruppe nur noch sudo dürfen:
Unter Ubuntu ist das ‚www-data‘ (kann man aber in /etc/group nachlesen)
visudo (öffnet den sudo-Editor)
Unter ‚# User privilege specification‘ folgende Zeile eingeben:
www-data ALL=NOPASSWD: /usr/sbin/smartctl
Jetzt mit STRG+O speichern und mit STRG+X beenden.
vi /usr/share/phpsysinfo/plugins/SMART/SMART.config.php
die notwendigen Zeilen (anpassen an den Befehl smartctl -a -d ata /dev/sda):
——————schnipp —————————
define(‚PSI_PLUGIN_SMART_ACCESS‘, ‚command‘);
define(‚PSI_PLUGIN_SMART_DEVICES‘, ‚/dev/sda‘); <— Device ggfs. anpassen
define(‚PSI_PLUGIN_SMART_DEVICE‘, ‚ata‘); <– Plattentyp ggfs. anpassen
und die letzte Zeile einfach so lassen:
define(‚PSI_PLUGIN_SMART_IDS‘, ‚005-RAW_VALUE,194-RAW_VALUE,4-RAW_VALUE,009-RAW_VALUE,012-RAW_VALUE,193-RAW_VALUE,001-RAW_VALUE,007-RAW_VALUE,200-RAW_VALUE‘);
?>
——————schnapp —————————
Aktivieren in der config:
vi /etc/phpsysinfo/config.php
etwa Zeile 61:
define(‚PSI_PLUGINS‘, false); ändern zu
define(‚PSI_PLUGINS‘, ‚SMART‘); oder falls noch andere Plugins geladen werden
define(‚PSI_PLUGINS‘, ‚PS,PSStatus,SMART‘);
Ab jetzt sollten die Plugins arbeiten und unten in der phpsysinfo Seite in etwa ein Ergebnis bringen, wie es im Screenshot dargestellt ist.
Anleitung gefunden auf http://mewbies.com