ç§ã¯ä»£æ¿ãããžã§ã¯ãapcupsdãèŠã€ããŸããããã¹ãŠãå°ããªèšå®ã§ç®±ããåºãããŸããã ipponã®åè 3000 UPSã1å°ã®ã³ã³ãã¥ãŒã¿ãŒã«æ¥ç¶ãããã®ã¿ã¹ã¯ã¯USBçµç±ã§ç£èŠãæ åœããZabbixããã®ã³ã³ãã¥ãŒã¿ãŒäžã«ãããŸãã Zabbixã®è©³çŽ°ã«ã€ããŠã¯èª¬æããŸããããå¥ã®èšäºã«å€ãããã®ã§ããã1ã€ã®èšäºã«å€ãããã®ã§ã¯ãªãããšã ãèšããŸãã ããã»ã¹ãæžãããšã«ã¯æå³ããããŸãã;ãã®ãããªèšäºã¯ãããããããŸãã æ¢è£œã®èšå®ãæã¡èŸŒãã ãã§ãã ããã±ãŒãžèªäœãã€ã³ã¹ããŒã«ããŸãã
$sudo apt-get install apcupsd
ããã©ã«ãã®æ§æãã¡ã€ã«ãšã¹ã¯ãªããã¯ãã¹ãŠãããã©ã«ãã§/ etc / acpupsdã«ãããŸããã¹ããŒã¿ã¹ãã¡ã€ã«ãšæ§æãã¡ã€ã«ã®ååã«ç¹ã«æ³šæããŠãã ããã
apcupsd-ippon0.conf
UPSC USB
UPSTYPE USB
ããã€ã¹/ dev / usb / hiddev0
LOCKFILE / var / lock
SCRIPTDIR / etc / apcupsd
PWRFAILDIR / etc / apcupsd
NOLOGINDIR /ãªã©
ãªã³ããããªãŒé 延6
ããããªãŒã¬ãã«5
3å
ã¿ã€ã ã¢ãŠã0
ã¢ãã€300
ã¢ããã£ã¬ã€60
NOLOGONç¡å¹
ãã«ãã£ã¬ã€0
NETSERVERãªã³
NISIP 127.0.0.1
NISPORT 3551
EVENTSFILE /var/log/apcupsd/apcupsd-ippon0.events
EVENTSFILEMAX 10
UPSCLASSã¹ã¿ã³ãã¢ãã³
UPSMODEç¡å¹
STATTIME 60
STATFILE /var/log/apcupsd/apcupsd-ippon0.status
LOGSTATSãªã
DATATIME 0
UPSTYPE USB
ããã€ã¹/ dev / usb / hiddev0
LOCKFILE / var / lock
SCRIPTDIR / etc / apcupsd
PWRFAILDIR / etc / apcupsd
NOLOGINDIR /ãªã©
ãªã³ããããªãŒé 延6
ããããªãŒã¬ãã«5
3å
ã¿ã€ã ã¢ãŠã0
ã¢ãã€300
ã¢ããã£ã¬ã€60
NOLOGONç¡å¹
ãã«ãã£ã¬ã€0
NETSERVERãªã³
NISIP 127.0.0.1
NISPORT 3551
EVENTSFILE /var/log/apcupsd/apcupsd-ippon0.events
EVENTSFILEMAX 10
UPSCLASSã¹ã¿ã³ãã¢ãã³
UPSMODEç¡å¹
STATTIME 60
STATFILE /var/log/apcupsd/apcupsd-ippon0.status
LOGSTATSãªã
DATATIME 0
apcupsd-ippon1.conf
UPSC USB
UPSTYPE USB
ããã€ã¹/ dev / usb / hiddev1
LOCKFILE / var / lock
SCRIPTDIR / etc / apcupsd
PWRFAILDIR / etc / apcupsd
NOLOGINDIR /ãªã©
ãªã³ããããªãŒé 延6
ããããªãŒã¬ãã«5
3å
ã¿ã€ã ã¢ãŠã0
ã¢ãã€300
ã¢ããã£ã¬ã€60
NOLOGONç¡å¹
ãã«ãã£ã¬ã€0
NETSERVERãªã³
NISIP 127.0.0.1
NISPORT 3552
EVENTSFILE /var/log/apcupsd/apcupsd-ippon1.events
EVENTSFILEMAX 10
UPSCLASSã¹ã¿ã³ãã¢ãã³
UPSMODEç¡å¹
STATTIME 60
STATFILE /var/log/apcupsd/apcupsd-ippon1.status
LOGSTATSãªã
DATATIME 0
UPSTYPE USB
ããã€ã¹/ dev / usb / hiddev1
LOCKFILE / var / lock
SCRIPTDIR / etc / apcupsd
PWRFAILDIR / etc / apcupsd
NOLOGINDIR /ãªã©
ãªã³ããããªãŒé 延6
ããããªãŒã¬ãã«5
3å
ã¿ã€ã ã¢ãŠã0
ã¢ãã€300
ã¢ããã£ã¬ã€60
NOLOGONç¡å¹
ãã«ãã£ã¬ã€0
NETSERVERãªã³
NISIP 127.0.0.1
NISPORT 3552
EVENTSFILE /var/log/apcupsd/apcupsd-ippon1.events
EVENTSFILEMAX 10
UPSCLASSã¹ã¿ã³ãã¢ãã³
UPSMODEç¡å¹
STATTIME 60
STATFILE /var/log/apcupsd/apcupsd-ippon1.status
LOGSTATSãªã
DATATIME 0
ç°¡åãªã¹ã¯ãªããã䜿çšããŠå®è¡ããŸã
apcups-start.sh
#!/bin/bash [ -n "`pgrep apcupsd`" ] && killall apcupsd ; sleep 5 ; UPS_DAEMON="/sbin/apcupsd" for CONF_FILE in /etc/apcupsd/apcupsd*conf do $UPS_DAEMON -f $CONF_FILE echo $UPS_DAEMON -f $CONF_FILE done
åæ§æãã¡ã€ã«ãapcupsd * confãã§apcupsdããŒã¢ã³ãèµ·åããŸãã / var / log / apcupsdãã£ã¬ã¯ããªã«ç§»åããŠããã®å 容ã調ã¹ãŸãããã¹ãŠãããŸããã£ãå Žåããã®å 容ã¯æ¬¡ã®ããã«ãªããŸãã
apcupsd-ippon0.events
apcupsd-ippon0.status
apcupsd-ippon1.events
apcupsd-ippon1.status
ååãããã€ãã³ãæ¡åŒµåãæã€ãã¡ã€ã«ãããŒã¢ã³ã€ãã³ããala start-stopãªã©ã®åå ã§ããããšã¯æããã§ãã ç§ãã¡ã«ãšã£ãŠãã¹ããŒã¿ã¹æ¡åŒµåãæã€ãã¡ã€ã«ã¯éåžžã«èå³æ·±ããã®ã§ãã ãã®äžã®1ã€ã«ã€ããŠèª¬æããªãã説æããŸãã ä»åŸãzabbiã®å€éšåŠçã¯ãããã®ãã¡ã€ã«ããæ å ±ãååŸãããšèšããŸãã
/var/log/apcupsd/apcupsd-ippon0.status
APCïŒ001,031,0762-ããŒãžã§ã³çªå·ãè¡æ°ããã€ãæ° æ¥ä»ïŒ2016-01-19 20:25:01 +0300-UPSããæ å ±ãåä¿¡ããæé HOSTNAMEïŒzavdiag-DNSãµãŒããŒå ããŒãžã§ã³ïŒ3.14.10ïŒ2011幎9æ13æ¥ïŒdebian-apcupsdãã«ãããŒãžã§ã³ UPSNAMEïŒzavdiag-apcupsd.confããã®åå ã±ãŒãã«ïŒUSBã±ãŒãã«-å¶åŸ¡ã±ãŒãã«ã®ã¿ã€ã ãã©ã€ããŒïŒUSB UPSãã©ã€ããŒ-ãã©ã€ããŒå UPSMODEïŒã¹ã¿ã³ãã¢ãã³ STARTTIMEïŒ2016-01-19 14:40:36 +0300-ããŒã¢ã³apcupsdãéå§ããããšã ã¢ãã«ïŒHID UPS-ã¢ãã« ã¹ããŒã¿ã¹ïŒãªã³ã©ã€ã³-çŸåšã®ã¹ããŒã¿ã¹ïŒãªã³ã©ã€ã³ããªã³ã©ã€ã³ãNOBATTãªã©ïŒãUPSããåé€ LOADPCTïŒ12.0ããŒã»ã³ãè² è·å®¹é-VAã«å¯Ÿããè² è·ã¬ãã«ãUPSããåé€ BCHARGEïŒ100.0ããŒã»ã³ã-UPSããåé€ãããããããªãŒå é»ã®å²å TIMELEFTïŒ62.4å-UPSããåé€ãããæšå®ããããªãŒå¯¿åœ MBATTCHGïŒ5ããŒã»ã³ã-apcupsd.confã®BATTERYLEVELå€ MINTIMELïŒ3å-apcupsd.confã®MINUTESå€ MAXTIMEïŒ0ç§-apcupsd.confã®ã¿ã€ã ã¢ãŠãå€ OUTPUTVïŒ216.0ãã«ã-UPSããæœåºãããåºåé»å§ DWAKEïŒ-01ç§-è² è·ããªã³ã«ãªããUPSããåé€ããããŸã§ãé»æºãå埩ããŠããUPSãåŸ æ©ããç§æ°ïŒèª€ã£ãŠè¡šç€ºããããšæããŸãïŒ LOTRANSïŒ176.0ãã«ã-蚱容é»å§ã®äžéãUPSããåé€ HITRANSïŒ264.0ãã«ã-蚱容é»å§ã®äžéãUPSããåé€ ALARMDELïŒ30ç§-é»æºé害æã®ä¿¡å·äŒéã®é 延æéãUPSããåé€ãããŸã LINEFREQïŒ50.0 Hz-UPSããæœåºãããå ¥åé»å§åšæ³¢æ° NUMXFERSïŒ0-UPSããååŸããç¶æ å€æŽã®æ° TONBATTïŒ0ç§-çŸåšã®ããããªãŒå¯¿åœãUPSããåé€ CUMONBATTïŒ0ç§-ããããªå¯¿åœã®åèšãUPSããåé€ XOFFBATTïŒN / A-ããããªãŒãããããã¯ãŒã¯ãžã®æåŸã®ç§»è¡æé ã»ã«ããã¹ãïŒããã-UPSã»ã«ããã¹ãã®çµæïŒOKãBT-äœå é»ãBG-éè² è·ãNO-çŽåã®5åéã¯éå§ããŸããã§ããïŒãUPSããåé€ãããŸã STATFLAGïŒ0x07000008ã¹ããŒã¿ã¹ãã©ã°-UPSããååŸããã¹ããŒã¿ã¹ãããæåå SERIALNOïŒS42140618978-UPSã·ãªã¢ã«çªå·ãUPSããåé€ NOMPOWERïŒ2700ã¯ãã-UPSããæœåºãããå®æ Œé»åïŒã¯ããïŒïŒã¢ã¯ãã£ãïŒïŒ çµäºAPCïŒ2016-01-19 20:25:02 +0300-ã¹ããŒã¿ã¹åºåã®æé</ blockquote>
詳现ã«ã€ããŠã¯ã ãã¡ããã芧ãã ããã
ãŸãã apcupsdæ§æã®è©³çŽ°ãèŠã€ããããšãã§ããŸãã
ã¹ã¯ãªãããã¡ã€ã«ãç·šéããã¡ãŒã«ã¢ãã¬ã¹ãå ¥åããŸãã
ã¹ã¯ãªããã®ç®çãç°¡åã«èª¬æããŸãã
changeme-ããããªãŒã®äº€æãå¿ èŠãªãšãã«åŒã³åºãããŸã
commfailure-ãããã¯ãšã®éä¿¡ã倱ããããšãã«åŒã³åºãããŸã
commok-ãããã¯ãšã®éä¿¡ã埩å ããããšãã«åŒã³åºãããŸã
onbatter y-å µèããé»æºã«åãæ¿ãããšãã«åŒã³åºãããŸã
offbattery-ããããªãŒããåãæ¿ãããšãã«åŒã³åºãããŸã
killpower-ã·ã£ããããŠã³åã«åŒã³åºãããŸã
ããã§apcupsdã®èšå®ãå®äºããŸããã èŠããã«ãããã»ã¹ã¯æ¬¡ã®ããã«ãªããŸããããŒã¢ã³ã¯UPSããã€ã¹ãããŒãªã³ã°ããç¶æ ãå€åãããšãã«é©åãªã¹ã¯ãªãããåŒã³åºããã¹ããŒã¿ã¹ãã¡ã€ã«ãçæããŸãã çŸåšãããããã¹ãŠãZabbixã«ãã€ã³ãããå¿ èŠããããŸãã
ç§ã®æèŠã§ã¯ãå¯äžã®è«ççãªæ¹æ³ã¯ã å€éšãã§ãã¯ã䜿çšããŠãããã«ããŒã¿ãå ¥åããããšã§ãã
ãããè¡ãã«ã¯ãã¹ããŒã¿ã¹ãã¡ã€ã«ã解æããæå®ããããã©ã¡ãŒã¿ãŒã®å€ãååŸããã¹ã¯ãªããã䜿çšããŸãã ç§ã®å ŽåããšãŒãžã§ã³ããšzabbixãµãŒããŒã®äž¡æ¹ãåãã³ã³ãã¥ãŒã¿ãŒã«é 眮ãããŸãã ãšãŒãžã§ã³ãã¯ããŒã10050ã§ãµãŒããŒ10051ããªãã¹ã³ããŸããå€éšæ€èšŒãã¡ã€ã«ã眮ãããŠãããã£ã¬ã¯ããªãèŠã€ããå¿ èŠããããŸãã ãããè¡ãã«ã¯ããµãŒããŒæ§æãã¡ã€ã«/etc/zabbix/zabbix_server.confã§æååExternalScripts = / usr / lib / zabbix / externalscriptsãæ¢ããŸãã ãã®ãã£ã¬ã¯ããªã«ãã§ãã¯ãã¡ã€ã«ãé 眮ããŸãã bashã¹ã¯ãªããã§ãã£ãŠãããã¡ã€ã«åã«ãããã䜿çšããªãã§ãã ããã æåã«ã次ã®ãããªã¹ã¯ãªãããäœæããŸããã
apcupsd-bashã¹ã¯ãªãã
#!/bin/bash if [[ $1 == ippon? ]] && [ -f "/var/log/apcupsd/apcupsd-$1.status" ] ; then case $2 in BCHARGE) cat /var/log/apcupsd/apcupsd-$1.status | grep 'BCHARGE' | awk '{print $3}' ;; OUTPUTV) cat /var/log/apcupsd/apcupsd-$1.status | grep 'OUTPUTV' | awk '{print $3}' ;; LOADPCT) cat /var/log/apcupsd/apcupsd-$1.status | grep 'LOADPCT' | awk '{print $3}' ;; DWAKE) cat /var/log/apcupsd/apcupsd-$1.status | grep 'DWAKE' | awk '{print $3}' ;; STATFLAG) cat /var/log/apcupsd/apcupsd-$1.status | grep 'STATFLAG' | awk '{print $3}' ;; STATUS) cat /var/log/apcupsd/apcupsd-$1.status | grep 'STATUS' | awk '{print $3}' ;; XOFFBATT) cat /var/log/apcupsd/apcupsd-$1.status | grep 'XOFFBATT' | awk '{print $3}' ;; TONBATT) cat /var/log/apcupsd/apcupsd-$1.status | grep 'TONBATT' | awk '{print $3}' ;; TIMELEFT) cat /var/log/apcupsd/apcupsd-$1.status | grep 'TIMELEFT' | awk '{print $3}' ;; esac fi
/etc/zabbix/zabbix_agentd.dãã£ã¬ã¯ããªã§ãå 容ãå«ãuserparameter_apcupsd.confãã¡ã€ã«ãäœæããŸã
UserParameter=apcupsd[*],/usr/lib/zabbix/externalscripts/apcupsd $1 $2
ãšãŒãžã§ã³ãã®åèµ·åïŒ
$sudo service zabbix-server restart
ãã ãããªããµã€ãã®Zabbixã«ã¯èŠåããããŸã
å€éšãã§ãã¯ãä¹±çšããªãã§ãã ããïŒ Zabbixã·ã¹ãã ã®ããã©ãŒãã³ã¹ãå€§å¹ ã«äœäžããå¯èœæ§ããããŸãã
ãããŠãç§ã¯ç®¡çè ã§ããã ãã§ãªããããã£ãã§ãããã®ã§ã Cã®å€éšãã§ãã¯ãæžãçŽãããšã«ããŸããã ãããŠã誰ããã®ããã©ãŒãã³ã¹ãéæããããç¥ã£ãŠããŸãã
å 容ãå«ãapcups.cãã¡ã€ã«ãäœæããŸãã
apcupsd.c
#include <stdio.h> #include <string.h> #include <unistd.h> char ValueParam[30]; char *GetValue(char *NameVar, char *FileName) { FILE *fconfig=fopen(FileName,"r"); char fileline[255]; unsigned char FLAGDDOT=0,FLAGSPACEB=0; memset(ValueParam,0,sizeof(ValueParam)); while(!feof(fconfig)) { fgets (fileline, 255, fconfig); if(strncmp(fileline,NameVar,strlen(NameVar))==0) { for(int i=0;i<strlen(fileline);i++) { if(fileline[i]!=':' && FLAGDDOT==0) continue; if(FLAGDDOT==0) { FLAGDDOT=1; continue; } if(fileline[i]==' ' && FLAGSPACEB==0) continue; if(fileline[i]==' ' && FLAGSPACEB==1) break; if(FLAGSPACEB==0) FLAGSPACEB=1; ValueParam[strlen(ValueParam)]=fileline[i]; ValueParam[strlen(ValueParam)+1]=0; } if(strlen(ValueParam)>0) break; } } fclose(fconfig); return ValueParam; } void main(int argc, char* argv[]) { //argv[1] - hostname argv[2] - param char fname[255]; // "ippon" 2 if((argc==3) && (strncmp(argv[1],"ippon",5)==0) ) { memset(fname,0,sizeof(fname)); strcpy(fname,"/var/log/apcupsd/apcupsd-"); strcat(fname,argv[1]); strcat(fname,".status"); // // /var/log/apcupsd/apcupsd-ipponX.status if(access( fname, F_OK ) != -1) { puts(GetValue(argv[2],fname)); } } return; }
次ã®ããã«ã³ã³ãã€ã«ããŸãã
gcc apcupsd.c -o apcupsd -std=c99
ã³ã³ãã€ã«ãããã¡ã€ã«ã/ usr / lib / zabbix / externalscriptsã«é 眮ããŸãã
æ®ã£ãŠããã®ã¯ãZabbixã®ãã³ãã¬ãŒããã€ã³ããŒãããããšã ãã§ãã
æ®éçãªããšããããšããç®æšãèªåèªèº«ã«èšå®ããã®ã§ã¯ãªããéã«ãå¿ èŠãªæå°åãè©Šã¿ãŸããã
ãã³ãã¬ãŒãã«ååšããŸã ïŒ ãã©ã¡ãŒã¿ãŒã®èª¬æã¯äžèšãåç § ïŒïŒ
ã°ã©ãã®å Žåã4ã€ã®ãã©ã¡ãŒã¿ãŒã®ã¿ãäœæããŸããã
ããããªãŒã®å é»ãé»æµè² è·ãåºåé»å§ãããã³ããããªãŒã®æ®ã寿åœã
apcupsdããŒã¢ã³ã®ã¹ã¯ãªããèªäœãã¡ãŒã«ã«éç¥ãéä¿¡ãããããããªã¬ãŒã«ã¯éå§ããçç±ããããŸããã ã€ã³ã¿ãŒããããåããé»è©±ã¯åžžã«ããªããšäžç·ã§ãã ããã ãã§ããããªãã®è³ªåã«çããŠããããã§ãã
ããã«æ°æ¥åŸãç§ã¯ããªããšå ±æããéåžžã«èå³æ·±ããã®ãèŠã€ããŸããã ããããããã¯ãäœæ¥éãåµé çãªèŠçããããªããæãã§ãããã
apcupsdãããžã§ã¯ãã«é¢ããŠã¯ãããã¯æ¬è³ªçã«çå¿ã§ãäž»ã«APC UPSã®äžã§ç ãæŸãŸãããŠããŸãã ããã䜿çšãããšãUSBçµç±ã§æ¥ç¶ãããšãã«ãUSB + COMãçµã¿åãããããã€ã¹ã䜿çšãããå¯èœæ§ãé«ããªããŸãã ç§ã®å Žåãããã¯äžæ¬åè 3000ã§ããããã€ãã¹ã®ãã¡ãããããªãŒã®é»åãšæž©åºŠã¯è¡šç€ºãããŸããã æããã«ããããã®ãã©ã¡ãŒã¿ãŒã¯APCã«ã¯ãããŸããã
NUTãããžã§ã¯ãã«é¢ããŠã¯ãããæ®éçã§ãããããã䜿çšãããšããŸããªUPSãæŸãå¯èœæ§ãé«ããªããŸãã USB + COMãçµã¿åãããæ¥ç¶ã§æãéèŠãªãã€ãã¹ã¯ãCOMã§ã®ã¿ãµããŒããããŸãïŒ