Web Fireman, Consultant, Photographer, Father, ...
... Roaming in the IT World
J'ai récemment eu quelques soucis avec un des disques durs (Western Digital 2 To WD20EARX-00PASB0) de mon NAS maison. Il n'est pas encore remplacé, mais a été rasé et devrait être prochainement renvoyé à WD (et merci @bdunogier pour ton retour sur leur SAV).
Bref, je n'ai pas vu le truc venir, et s'en est suivi un perte de médias assez énorme dans ma médiathèque il y a un mois de ça. Aujourd'hui j'ai donc cherché à anticiper ce genre de problème. J'avais bien sur installé munin et le monitoring S.M.A.R.T, mais la seule erreur était le code de retour de l'execution de smartctl (64) lequel n'est pas très explicite si on ne fait pas l'effort de lire la doc... (no comment). Et comme l'erreur était là depuis le début, je n'ai pas relevé...
J'ai donc regardé ce que je pouvais faire avec smartmontools et le démon associé (smartd).
S.M.A.R.T dont les initiales signifient S elf-M onitoring A nalysis and R eporting T echnology, est donc un système de surveillance qui a pour but d'alerter tout administrateur système sur la future défaillance d'un disque dur. Tous les disques récents sont équipés de plusieurs mécanismes comme la réallocation de secteurs défectueux, lesquels permettent à un disque dur de continuer à fonctionner lorsqu'il commence à faillir. Mais il s'agit bien d'un garde-fou et il est nécessaire de rapidement prendre ses dispositions.
Plus d'informations sur S.M.A.R.T : http://fr.wikipedia.org/wiki/Self-Monitoring,_Analysis_and_Reporting_Technology
smartd utilise smartctl pour analyser les disques durs de votre système, reste donc à choisir les options à utiliser. La commande sudo smartctl -i /dev/sdX pour identifier vos disques durs éventuellement (ou pour récupérer le numéro de série pour le SAV par exemple).
Je ne vais pas m'étendre dessus, mais grosso modo sudo smartctl -a /dev/sdb donnera des informations sur votre disque sdb :
smartctl 5.40 2010-07-12 r3124 [x86_64-unknown-linux-gnu] (local build) Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net === START OF INFORMATION SECTION === Device Model: WDC WD20EARX-00PASB0 Serial Number: WD-XXXXXXXXXX Firmware Version: 51.0AB51 User Capacity: 2 000 398 934 016 bytes Device is: Not in smartctl database [for details use: -P showall] ATA Version is: 8 ATA Standard is: Exact ATA specification draft version not indicated Local Time is: Wed Jan 4 10:58:42 2012 CET SMART support is: Available - device has SMART capability. SMART support is: Enabled === START OF READ SMART DATA SECTION === SMART overall-health self-assessment test result: PASSED [...] SMART Attributes Data Structure revision number: 16 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x002f 198 197 051 Pre-fail Always - 69 3 Spin_Up_Time 0x0027 172 168 021 Pre-fail Always - 6375 4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 138 5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0 7 Seek_Error_Rate 0x002e 200 200 000 Old_age Always - 0 9 Power_On_Hours 0x0032 097 097 000 Old_age Always - 2601 10 Spin_Retry_Count 0x0032 100 100 000 Old_age Always - 0 11 Calibration_Retry_Count 0x0032 100 253 000 Old_age Always - 0 12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 56 192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 22 193 Load_Cycle_Count 0x0032 193 193 000 Old_age Always - 21604 194 Temperature_Celsius 0x0022 117 110 000 Old_age Always - 33 196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0 197 Current_Pending_Sector 0x0032 200 196 000 Old_age Always - 1 198 Offline_Uncorrectable 0x0030 200 196 000 Old_age Offline - 0 199 UDMA_CRC_Error_Count 0x0032 200 200 000 Old_age Always - 0 200 Multi_Zone_Error_Rate 0x0008 200 156 000 Old_age Offline - 0 SMART Error Log Version: 1 Warning: ATA error count 4724 inconsistent with error log pointer 1 ATA Error Count: 4724 (device log contains only the most recent five errors) CR = Command Register [HEX] FR = Features Register [HEX] SC = Sector Count Register [HEX] SN = Sector Number Register [HEX] CL = Cylinder Low Register [HEX] CH = Cylinder High Register [HEX] DH = Device/Head Register [HEX] DC = Device Command Register [HEX] ER = Error register [HEX] ST = Status register [HEX] Powered_Up_Time is measured from power on, and printed as DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes, SS=sec, and sss=millisec. It "wraps" after 49.710 days. [...] SMART Self-test log structure revision number 1 Num Test_Description Status Remaining LifeTime(hours) LBA_of_first_error # 1 Short offline Completed: read failure 90% 2586 19380744 SMART Selective self-test log data structure revision number 1 SPAN MIN_LBA MAX_LBA CURRENT_TEST_STATUS 1 0 0 Not_testing 2 0 0 Not_testing 3 0 0 Not_testing 4 0 0 Not_testing 5 0 0 Not_testing Selective self-test flags (0x0): After scanning selected spans, do NOT read-scan remainder of disk. If Selective self-test is pending on power-up, resume after 0 minute delay.
Les options choisies, il suffit d'aller éditer le fichier /etc/smartd.conf, commenter la première ligne
#DEVICESCAN -d removable -n standby -m root -M exec /usr/share/smartmontools/smartd-runnerEt ajouter pour chacun des disques durs à monitorer, la ligne correspondante avec les options voulues :
/dev/sdb -d sat -a -o on -S on -s (S/../.././02|L/../../6/03) -m root
Notez l'option -m root, qui enverra un mail à l'utilisateur root de mon système. Pour les autres options voir les manpage correspondantes.
Notez aussi que je ne monitore qu'un seul disque sur les 3 dont je dispose puisque pour le moment les autres ne remontent pas d'erreur dans munin.
Ne pas oublier d'activer le démon dans /etc/default/smartmontools en décommentant la ligne start_smartd=yes
Déjà mis en place quelques mois auparavant pour monitorer l'état de mon UPS (dont l'une de mes sources a été http://blog.agdunn.net/?p=385 ), il suffit d'installer ssmtp et de le configurer dans /etc/ssmtp/ssmtp.conf. Personnellement j'utilise un compte gmail pour l'envoi smtp.
# # Config file for sSMTP sendmail # # The person who gets all mail for userids < 1000 # Make this empty to disable rewriting. root=user@domain.com # The place where the mail goes. The actual machine name is required no # MX records are consulted. Commonly mailhosts are named mail.domain.com mailhub=smtp.gmail.com:587 # Where will the mail seem to come from? #rewriteDomain= # The full hostname hostname=yourhostname # Are users allowed to set their own From: address? # YES - Allow the user to specify their own From: address # NO - Use the system generated From: address #FromLineOverride=YES UseSTARTTLS=YES UseTLS=YES AuthUser=smtpuser AuthPass=smtppassword
La première directive transferera donc tous les mails envoyés à l'utilisateur root sur l'adresse mail indiquée.
Mots clés:
Monitoring ,
Note2self ,
Système
Debian (2) PHP (2) Mac OS X (1) phpmyadmin (1) Développement (1) ezlupdate (1) multi-lingual (1) Monitoring (1) Système (1) Bootstrap (1) Perso (1) Pro (1) Dedibox (1) Réseau (1) VMware vSphere Hypervisor (ESXi) (1) Virtualisation (1) Blog (1) Github (1) homebrew (2) Note2self (2) eZ Publish (4)
Aujourd'hui freelance, c'est après 7 ans d'experience sur des projets web de toute sorte que j'ai choisi d'offrir des services pros aussi bien aux clients finaux qu'aux sociétés de service type web agency, intégrateurs, etc.
J'opère essentiellement sur des projets PHP / LAMP souvent connotés eZ Publish (mais pas seulement), et sur des projets où une attention particulière doit être portée sur les aspects performance, l'optimisation de la plate-forme, ou le développement de connecteurs, etc.
Ma dernière experience en tant que consultant / formateur et responsable grand comptes m'a permis de mieux comprendre les enjeux de tous les acteurs d'un projet web. Au travers d'un grand nombre d'interventions sur des projets de toutes tailles et typologies, j'ai eu l'occasion de faire face à des problématiques complétement différentes et c'est ce qui fait aujourd'hui mon experience.
Pour me contacter, vous pouvez utiliser ce formulaire .