1.Установка скрипта на Zabbix-агенте
| 
					 1  | 
						# megacli -LDInfo -LAll -a0 –NoLog  | 
					
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22  | 
						Adapter 0 -- Virtual Drive Information: Virtual Drive: 0 (Target Id: 0) Name                : RAID Level          : Primary-1, Secondary-0, RAID Level Qualifier-0 Size                : 2.728 TB Sector Size         : 512 Is VD emulated      : Yes Mirror Data         : 2.728 TB State               : Optimal Strip Size          : 256 KB Number Of Drives    : 2 Span Depth          : 1 Default Cache Policy: WriteBack, ReadAhead, Direct, Write Cache OK if Bad BBU Current Cache Policy: WriteBack, ReadAhead, Direct, Write Cache OK if Bad BBU Default Access Policy: Read/Write Current Access Policy: Read/Write Disk Cache Policy   : Disk's Default Encryption Type     : None Bad Blocks Exist: No Is VD Cached: No Exit Code: 0x00  | 
					
| 
					 1  | 
						# megacli -PDlist -a0 -NoLog  | 
					
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97  | 
						Adapter #0 Enclosure Device ID: 252 Slot Number: 0 Drive's position: DiskGroup: 0, Span: 0, Arm: 0 Enclosure position: N/A Device Id: 3 WWN: 50014ee65b17627a Sequence Number: 2 Media Error Count: 0 Other Error Count: 0 Predictive Failure Count: 0 Last Predictive Failure Event Seq Number: 0 PD Type: SATA Raw Size: 2.728 TB [0x15d50a3b0 Sectors] Non Coerced Size: 2.728 TB [0x15d40a3b0 Sectors] Coerced Size: 2.728 TB [0x15d400000 Sectors] Sector Size:  0 Logical Sector Size:  0 Physical Sector Size:  0 Firmware state: Online, Spun Up Commissioned Spare : No Emergency Spare : No Device Firmware Level: 1K03 Shield Counter: 0 Successful diagnostics completion on :  N/A SAS Address(0): 0x4433221103000000 Connected Port Number: 1(path0) Inquiry Data:      WD-WMC1F0E62TV5WDC WD3000FYYZ-01UL1B2                  01.01K03 FDE Capable: Not Capable FDE Enable: Disable Secured: Unsecured Locked: Unlocked Needs EKM Attention: No Foreign State: None Device Speed: 6.0Gb/s Link Speed: 6.0Gb/s Media Type: Hard Disk Device Drive:  Not Certified Drive Temperature :41C (105.80 F) PI Eligibility:  No Drive is formatted for PI information:  No PI: No PI Drive's NCQ setting : N/A Port-0 : Port status: Active Port's Linkspeed: 6.0Gb/s Drive has flagged a S.M.A.R.T alert : No Enclosure Device ID: 252 Slot Number: 1 Drive's position: DiskGroup: 0, Span: 0, Arm: 1 Enclosure position: N/A Device Id: 2 WWN: 5000c500521a8d55 Sequence Number: 2 Media Error Count: 0 Other Error Count: 0 Predictive Failure Count: 0 Last Predictive Failure Event Seq Number: 0 PD Type: SATA Raw Size: 2.728 TB [0x15d50a3b0 Sectors] Non Coerced Size: 2.728 TB [0x15d40a3b0 Sectors] Coerced Size: 2.728 TB [0x15d400000 Sectors] Sector Size:  0 Logical Sector Size:  0 Physical Sector Size:  0 Firmware state: Online, Spun Up Commissioned Spare : No Emergency Spare : No Device Firmware Level: CC4B Shield Counter: 0 Successful diagnostics completion on :  N/A SAS Address(0): 0x4433221102000000 Connected Port Number: 0(path0) Inquiry Data:             S1F0YM5XST3000DM001-9YN166                      CC4B FDE Capable: Not Capable FDE Enable: Disable Secured: Unsecured Locked: Unlocked Needs EKM Attention: No Foreign State: None Device Speed: 6.0Gb/s Link Speed: 6.0Gb/s Media Type: Hard Disk Device Drive:  Not Certified Drive Temperature :39C (102.20 F) PI Eligibility:  No Drive is formatted for PI information:  No PI: No PI Drive's NCQ setting : N/A Port-0 : Port status: Active Port's Linkspeed: 6.0Gb/s Drive has flagged a S.M.A.R.T alert : No  | 
					
Узнаем расположение бинарника megacli
| 
					 1  | 
						# which megacli  | 
					
| 
					 1  | 
						/usr/sbin/megacli  | 
					
Если путь к бинарнику отличается,то изменяем его в скрипте и в файле /etc/sudoers
| 
					 1  | 
						# nano /etc/zabbix/scripts/lsimegaraid.sh  | 
					
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98  | 
						#!/bin/bash export LC_ALL="" export LANG="en_US.UTF-8" # MEGACLI="sudo /usr/sbin/megacli" # if [[ -n ${1} && -n ${2} && -z ${3} ]]; then   ##### DISCOVERY #####   TYPE="${2}"   if [[ ${TYPE} == "virtdiskovery" ]]; then     DRIVES=`${MEGACLI} -LDInfo -LAll -a0 -NoLog | awk '/Virtual Drive:/ {printf("VirtualDrive%d\n", $3)}'`     if [[ -n ${DRIVES} ]]; then       JSON="{ \"data\":["       SEP=""       for DRIVE in ${DRIVES}; do         JSON=${JSON}"$SEP{\"{#VIRTNUM}\":\"${DRIVE}\"}"         SEP=", "       done       JSON=${JSON}"]}"       echo ${JSON}     fi   elif [[ ${TYPE} == "physdiskovery" ]]; then     DRIVES=`${MEGACLI} -PDlist -a0 -NoLog | awk '/Slot Number:/ {printf("DriveSlot%d\n", $3)}'`     if [[ -n ${DRIVES} ]]; then       JSON="{ \"data\":["       SEP=""       for DRIVE in ${DRIVES}; do         JSON=${JSON}"$SEP{\"{#PHYSNUM}\":\"${DRIVE}\"}"         SEP=", "       done       JSON=${JSON}"]}"       echo ${JSON}     fi   fi   exit 0 elif [[ -n ${1} && -n ${2} && -n ${3} ]]; then   ##### PARAMETERS #####   ##### PARAMETERS #####   HOST="${1}"   DRIVE="${2}"   METRIC="${3}"   FILECACHE="/tmp/zabbix.lsimegaraid.cache"   TTLCACHE="55"   TIMENOW=`date '+%s'`   ##### CACHE #####   if [ -s "${FILECACHE}" ]; then     TIMECACHE=`stat -c"%Y" "${FILECACHE}"`   else     TIMECACHE=0   fi   if [ "$((${TIMENOW} - ${TIMECACHE}))" -gt "${TTLCACHE}" ]; then     echo "" >> ${FILECACHE} # !!!     DATACACHE=`${MEGACLI} -PDlist -a0 -NoLog | awk -F':' '         function ltrim(s) { sub(/^[ \t]+/, "", s); return s }         function rtrim(s) { sub(/[ \t]+$/, "", s); return s }         function trim(s)  { return rtrim(ltrim(s)); }         /Slot Number/              {slotcounter+=1; slot[slotcounter]=trim($2)}         /Inquiry Data/             {inquiry[slotcounter]=trim($2)}         /Firmware state/           {state[slotcounter]=trim($2)}         /Drive Temperature/        {temperature[slotcounter]=trim($2)}         /S.M.A.R.T/                {smart[slotcounter]=trim($2)}         /Media Error Count/        {mediaerror[slotcounter]=trim($2)}         /Other Error Count/        {othererror[slotcounter]=trim($2)}      /Predictive Failure Count/ {failurecount[slotcounter]=trim($2)}         END {           for (i=1; i<=slotcounter; i+=1) {             printf ( "DriveSlot%d inquiry:%s\n",slot[i], inquiry[i]);             printf ( "DriveSlot%d state:%s\n", slot[i], state[i]);             printf ( "DriveSlot%d temperature:%d\n", slot[i], temperature[i]);             printf ( "DriveSlot%d smart:%s\n", slot[i], smart[i]);             printf ( "DriveSlot%d mediaerror:%d\n", slot[i], mediaerror[i]);             printf ( "DriveSlot%d othererror:%d\n", slot[i], othererror[i]);             printf ( "DriveSlot%d failurecount:%d\n", slot[i], failurecount[i]);           }         }';         ${MEGACLI} -LDInfo -LAll -a0 -NoLog | awk -F':' '         function ltrim(s) { sub(/^[ \t]+/, "", s); return s }         function rtrim(s) { sub(/[ \t]+$/, "", s); return s }         function trim(s)  { return rtrim(ltrim(s)); }         /Virtual Drive:/ {drivecounter+=1; slot[drivecounter]=trim($2);}         /State/          {state[drivecounter]=trim($2)}         /Bad Blocks/     {badblock[drivecounter]=trim($2)}         END {           for (i=1; i<=drivecounter; i+=1) {    printf ( "VirtualDrive%d state:%s\n", slot[i], state[i]);             printf ( "VirtualDrive%d badblock:%s\n", slot[i], badblock[i]);           }         }'` || exit 1     echo "${DATACACHE}" > ${FILECACHE} # !!!   fi   #   cat "${FILECACHE}" | grep -i ${DRIVE} | awk -F':' "/${METRIC}/ {print \$2}" | head -n1   exit 0 # else   exit 0 fi  | 
					
Установка прав
| 
					 1  | 
						# chown root:zabbix /etc/zabbix/scripts/lsimegaraid.sh  | 
					
| 
					 1  | 
						# chmod 550 /etc/zabbix/scripts/lsimegaraid.sh  | 
					
2.Настройка прав пользователю zabbix в sudo
| 
					 1  | 
						# visudo  | 
					
| 
					 1 2 3  | 
						# zabbix ALL=(ALL) NOPASSWD: /usr/sbin/megacli -LDInfo -LAll -a0 -NoLog # zabbix ALL=(ALL) NOPASSWD: /usr/sbin/megacli -PDlist -a0 –NoLog zabbix ALL=(ALL) NOPASSWD: /usr/sbin/megacli  | 
					
Проверка работы скрипта для пользователя Zabbix
| 
					 1  | 
						# sudo -u zabbix /etc/zabbix/scripts/lsimegaraid.sh none virtdiskovery  | 
					
| 
					 1  | 
						# sudo -u zabbix /etc/zabbix/scripts/lsimegaraid.sh none physdiskovery  | 
					
| 
					 1  | 
						# sudo -u zabbix /etc/zabbix/scripts/lsimegaraid.sh none VirtualDrive0 state  | 
					
3.Настройка Zabbix-агента
| 
					 1  | 
						# nano /etc/zabbix/zabbix_agentd.d/userparameter_lsimegaraid.conf  | 
					
[…]

 Июнь 1st, 2016 
 Evgeniy Kamenev 
 Опубликовано в рубрике 
 Метки: