{"id":374,"date":"2016-12-02T12:24:03","date_gmt":"2016-12-02T10:24:03","guid":{"rendered":"http:\/\/www.multi-net.ch\/?page_id=374"},"modified":"2019-11-07T20:51:07","modified_gmt":"2019-11-07T18:51:07","slug":"monitoring-intel-matrix-rapid-storage-technology-raid","status":"publish","type":"page","link":"https:\/\/www.multi-net.ch\/?page_id=374","title":{"rendered":"Monitoring Intel Matrix \/ Rapid Storage Technology RAID"},"content":{"rendered":"<p>Bien souvent les programmes sont difficilement automatisables, comme c&rsquo;est par exemple avec un logiciel d&rsquo;Intel. Je vais vous montrer comme j&rsquo;ai r\u00e9ussi\u00a0\u00e0 palier \u00e0 ce probl\u00e8me, en utilisant l&rsquo;observateur d&rsquo;\u00e9v\u00e9nements (Event Viewer), un script powershell, un script AutoIT, SCCM puis finalement Microsoft System Orchestrator.<\/p>\n<p>Dans un premier temps, il\u00a0a fallu d\u00e9terminer comment savoir que le RAID \u00e0 un statut d\u00e9grad\u00e9. Apr\u00e8s une analyse, le logiciel \u00ab\u00a0Intel\u00ae Rapid Storage Technology\u00a0\u00bb cr\u00e9e un \u00e9v\u00e8nement dans l&rsquo;observateur d&rsquo;\u00e9v\u00e9nement, il cr\u00e9e l&rsquo;\u00e9v\u00e8nement ID 7206 lorsque le RAID est d\u00e9grad\u00e9 et cr\u00e9er le 7207 lorsqu&rsquo;il est redevenu op\u00e9rationnel.<\/p>\n<p><a href=\"https:\/\/www.multi-net.ch\/wp-content\/uploads\/2016\/09\/monitor_raid_intel_1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-376 size-full\" src=\"https:\/\/www.multi-net.ch\/wp-content\/uploads\/2016\/09\/monitor_raid_intel_1.png\" width=\"793\" height=\"62\" srcset=\"https:\/\/www.multi-net.ch\/wp-content\/uploads\/2016\/09\/monitor_raid_intel_1.png 793w, https:\/\/www.multi-net.ch\/wp-content\/uploads\/2016\/09\/monitor_raid_intel_1-300x23.png 300w, https:\/\/www.multi-net.ch\/wp-content\/uploads\/2016\/09\/monitor_raid_intel_1-768x60.png 768w, https:\/\/www.multi-net.ch\/wp-content\/uploads\/2016\/09\/monitor_raid_intel_1-500x39.png 500w\" sizes=\"auto, (max-width: 793px) 100vw, 793px\" \/><\/a><\/p>\n<p>J&rsquo;ai donc rajout\u00e9\u00a0deux t\u00e2ches planifi\u00e9es, comme ci-dessus et donc\u00a0lorsque un de ces deux \u00e9v\u00e8nements survient, j&rsquo;\u00e9crit dans un fichier le statut du RAID. Par exemple j&rsquo;\u00e9crit : \u00ab\u00a00: RAID DEGRADED\u00a0\u00bb si celui-ci est d\u00e9grad\u00e9 et \u00ab\u00a01: RAID OK\u00a0\u00bb lorsque il est fonctionnel.<\/p>\n<p>Je peux donc apr\u00e8s facilement r\u00e9cup\u00e9rer cette information depuis d&rsquo;autre syst\u00e8me, au d\u00e9part je pensais utiliser PRTG (un logiciel de monitoring), mais finalement j&rsquo;ai opt\u00e9 pour la solution\u00a0via SCCM &amp; Microsoft System Orchestrator. Si j&rsquo;ai choisi cette solution c&rsquo;est que le logiciel, contr\u00f4le de l&rsquo;\u00e9tat du RAID doit \u00eatre automatiquement install\u00e9 si le PC dispose du RAID, dans l&rsquo;autre solution il aurait fallu ajouter chaque PC manuellement ce qui est plus contraignant.<\/p>\n<p>La logique est la suivante, si SCCM d\u00e9tecte un disque se nommant \u00ab\u00a0Intel Raid 1 Volume SCSI Disk Device\u00a0\u00bb, il force l&rsquo;installation du logiciel Intel\u00ae Rapid Storage Technology.<\/p>\n<p>Voici le script la r\u00e8gle (Membership Rule) utilis\u00e9e :<\/p>\n<blockquote><p><code>select SMS_R_SYSTEM.ResourceID,SMS_R_SYSTEM.ResourceType,<\/code><br \/>\n<code>SMS_R_SYSTEM.Name,SMS_R_SYSTEM.SMSUniqueIdentifier,<\/code><\/p>\n<p><code>SMS_R_SYSTEM.ResourceDomainORWorkgroup,<\/code><br \/>\n<code>SMS_R_SYSTEM.Client from SMS_R_System inner join SMS_G_System_DISK on<\/code><br \/>\n<code>SMS_G_System_DISK.ResourceId = SMS_R_System.ResourceId<\/code><br \/>\n<code>where SMS_G_System_DISK.Caption = \"Intel Raid 1 Volume SCSI Disk Device\"<\/code><\/p><\/blockquote>\n<p>Ensuite, afin de cr\u00e9er le fichier du dernier statut du RAID, j&rsquo;ai fait le script AutoIt suivant:<\/p>\n<blockquote><p><code>#Region ;**** Directives created by AutoIt3Wrapper_GUI ****<\/code><br \/>\n<code>#AutoIt3Wrapper_UseX64=y<\/code><br \/>\n<code>#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****<\/code><\/p>\n<p><code>#include &lt;EventLog.au3&gt;<\/code><br \/>\n<code>#include &lt;FileConstants.au3&gt;<\/code><br \/>\n<code>Global Const $sFilePath = @WindowsDir &amp; \"\\system32\\raid_log.txt\"<\/code><br \/>\n<code>$hLog = _EventLog__Open(\"\", \"Application\")<\/code><br \/>\n<code>$sCount = _EventLog__Count($hLog)<\/code><\/p>\n<p><code>$found = 0<\/code><\/p>\n<p><code>For $i = $sCount To 1 Step -1<\/code><br \/>\n<code>$aEvent = _EventLog__Read($hLog, True, False, $i)<\/code><br \/>\n<code>If StringInStr($aEvent[6], 7206)\u00a0 Then<\/code><br \/>\n<code>;LAST STATUS DEGRADED<\/code><br \/>\n<code>ConsoleWrite(\"LAST STATUS DEGRADED\" &amp; @CRLF)<\/code><br \/>\n<code>WriteFile(\"0:DEGRADED\")<\/code><br \/>\n<code>$found = 1<\/code><br \/>\n<code>ExitLoop<\/code><br \/>\n<code>EndIf<\/code><br \/>\n<code>If StringInStr($aEvent[6], 7207) Then<\/code><br \/>\n<code>;LAST STATUS NORMAL<\/code><br \/>\n<code>ConsoleWrite(\"LAST STATUS NORMAL\" &amp; @CRLF)<\/code><br \/>\n<code>WriteFile(\"1:NORMAL\")<\/code><br \/>\n<code>$found = 1<\/code><br \/>\n<code>ExitLoop<\/code><br \/>\n<code>EndIf<\/code><br \/>\n<code>Next<\/code><\/p>\n<p><code>If $found = 0 Then<\/code><br \/>\n<code>WriteFile(\"1:NORMAL\")<\/code><br \/>\n<code>EndIf<\/code><br \/>\n<code>Func WriteFile($status)<\/code><\/p>\n<p><code>; Open the file\u00a0\u00a0\u00a0\u00a0 $FO_OVERWRITE+$FO_CREATEPATH<\/code><br \/>\n<code>Local $hFileOpen = FileOpen($sFilePath, 10)<\/code><\/p>\n<p><code>; Write data to the file using the handle returned by FileOpen.<\/code><br \/>\n<code>FileWriteLine($hFileOpen, $status)<\/code><\/p>\n<p><code>; Close the handle returned by FileOpen.<\/code><br \/>\n<code>FileClose($hFileOpen)<\/code><br \/>\n<code>EndFunc\u00a0\u00a0 ;==&gt;Example<\/code><\/p><\/blockquote>\n<p>Celui-ci parcours les \u00e9v\u00e8nements Windows \u00e0 la recherche du dernier statut, suivant le dernier statut, il \u00e9crit 0:DEGRADED ou 1:NORMAL.<\/p>\n<p>Nous avons maintenant en place l&rsquo;installation et l&rsquo;\u00e9criture du statut du RAID, il nous reste plus qu&rsquo;\u00e0 \u00eatre alert\u00e9 lorsque le statut change. Pour cela, j&rsquo;ai utilis\u00e9 Orchestrator. Pour l&rsquo;instant il ne cr\u00e9e pas d&rsquo;incident, mais il pourrait le faire directement, dans mon cas j&rsquo;envoie simplement un email d&rsquo;information.<\/p>\n<p>La logique est la suivante, tous les\u00a0quatre heures, orchestration r\u00e9cup\u00e8re les membres de la collection qui poss\u00e8de un syst\u00e8me RAID, puis contr\u00f4le si le PC est allum\u00e9, si c&rsquo;est le cas il d\u00e9marre le script power Shell, selon le r\u00e9sultat, il envoie un email, ou non. L&rsquo;\u00e9tape \u00ab\u00a0Send Platform.. \u00a0\u00bb est ici utilis\u00e9 \u00e0 des fins de diagnostique seulement.<\/p>\n<p>Voici le sch\u00e9ma Orchestator<a href=\"https:\/\/www.multi-net.ch\/wp-content\/uploads\/2016\/09\/monitor_raid_intel_4.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-382 size-large\" src=\"https:\/\/www.multi-net.ch\/wp-content\/uploads\/2016\/09\/monitor_raid_intel_4-1024x365.png\" alt=\"monitor_raid_intel_4\" width=\"584\" height=\"208\" srcset=\"https:\/\/www.multi-net.ch\/wp-content\/uploads\/2016\/09\/monitor_raid_intel_4-1024x365.png 1024w, https:\/\/www.multi-net.ch\/wp-content\/uploads\/2016\/09\/monitor_raid_intel_4-300x107.png 300w, https:\/\/www.multi-net.ch\/wp-content\/uploads\/2016\/09\/monitor_raid_intel_4-768x274.png 768w, https:\/\/www.multi-net.ch\/wp-content\/uploads\/2016\/09\/monitor_raid_intel_4-500x178.png 500w, https:\/\/www.multi-net.ch\/wp-content\/uploads\/2016\/09\/monitor_raid_intel_4.png 1168w\" sizes=\"auto, (max-width: 584px) 100vw, 584px\" \/><\/a><\/p>\n<p>Voici le script powershell qui contr\u00f4le du statut<\/p>\n<blockquote><p><code>$strFileName =\u00a0 \"\\\\{Member Name form \"Get Collection Members\"}\\c$\\windows\\system32\\raid_log.txt\"<\/code><br \/>\n<code>$Bool = -1<\/code><br \/>\n<code>$Status = Get-Content($strFileName)<\/code><br \/>\n<code>If (Test-Path $strFileName){<\/code><br \/>\n<code># \/\/ File exists<\/code><br \/>\n<code>$Bool = 1<\/code><br \/>\n<code>$Status = Get-Content($strFileName)<\/code><br \/>\n<code>If($Status -eq \"0:DEGRADED\"){$Bool = 0}<\/code><br \/>\n<code>}<\/code><\/p><\/blockquote>\n<!--CusAds0-->\n<div style=\"font-size: 0px; height: 0px; line-height: 0px; margin: 0; padding: 0; clear: both;\"><\/div>","protected":false},"excerpt":{"rendered":"<p>Bien souvent les programmes sont difficilement automatisables, comme c&rsquo;est par exemple avec un logiciel d&rsquo;Intel. Je vais vous montrer comme j&rsquo;ai r\u00e9ussi\u00a0\u00e0 palier \u00e0 ce probl\u00e8me, en utilisant l&rsquo;observateur d&rsquo;\u00e9v\u00e9nements (Event Viewer), un script powershell, un script AutoIT, SCCM puis &hellip; <a href=\"https:\/\/www.multi-net.ch\/?page_id=374\">Continuer la lecture <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-374","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.multi-net.ch\/index.php?rest_route=\/wp\/v2\/pages\/374","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.multi-net.ch\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.multi-net.ch\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.multi-net.ch\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.multi-net.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=374"}],"version-history":[{"count":13,"href":"https:\/\/www.multi-net.ch\/index.php?rest_route=\/wp\/v2\/pages\/374\/revisions"}],"predecessor-version":[{"id":502,"href":"https:\/\/www.multi-net.ch\/index.php?rest_route=\/wp\/v2\/pages\/374\/revisions\/502"}],"wp:attachment":[{"href":"https:\/\/www.multi-net.ch\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=374"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}