아래의 출처에서 다운받은 템플릿.
해당 템플릿을 다운 받고 cfgmaker 에서 옵션을 --host-template=host-generic.htp 추가하여 사용하면된다.
다만 해당사이트에서 다운받은 템플릿으로 생성한 cfg 파일을 indexmaker로 만들때 아래와 같은 에러메시지가 뜬다.
ERROR: no H1 line pagetop property in 아이피-memory section
indexmaker에서 pagetop 옵션에는 H1 태그로 찾는 게 기본값인데, 해당 템플릿에서는 H1 지정이 안되어 있다.
해당 문제는 -section 옵션으로 해결할 수 있다.
아래의 옵션중에 h1 외의 옵션으로 설정하여 실행하면 된다.
- section = h1 섹션의 헤딩으로 PageTop에 h1 태그를 사용 (기본값) - section = title 그래프 섹션 헤딩으로 Title을 사용 - section = name 섹션 헤딩으로 그래프 이름을 사용 - section = descr 섹션 헤딩으로 그래프 description을 사용 - section = portname 섹션 헤딩으로 PageTop에 port 이름 항목을 사용
아래는 H1 태그 추가한 버젼.
# Generic host template for all systems support MIB-II host resources# MIB. Will take care of storage devices as well, but watch out for# changes in enumeration caused by inserting USB devices!# Watch out for lines being wrapped by broken editing software$head_lines .= "#---------------------------------------------------------------------\n";if( $sysdescr =~ /linux/i ) { $target_lines .= "routers.cgi*Icon: linux-sm.gif\n";} elsif( $sysdescr =~ /(windows|microsoft)/i ) { $target_lines .= "routers.cgi*Icon: windows-sm.gif\n";} elsif( $sysdescr =~ /IBM/i ) { $target_lines .= "routers.cgi*Icon: aix-sm.gif\n";} elsif( $sysdescr =~ /(sun|solaris)/i ) { $target_lines .= "routers.cgi*Icon: sun-sm.gif\n";} elsif( $sysdescr =~ /cisco/i ) { $target_lines .= "routers.cgi*Icon: cisco-sm.gif\n";}$target_lines .= <<ECHO;routers.cgi*Description: $router_name ($sysname)routers.cgi*ShortDesc: $sysname#-------------------------------------------------ECHOmy($cpuoid) = oid_pick($router_connect,$v3opt,"1.3.6.1.4.1.2021.11.11.0", "1.3.6.1.4.1.9.2.1.58.0");if($cpuoid) { # this uses the UCD MIB or Cisco MIB$target_lines .= <<ECHO;######################################## CPU loadTarget[$router_name-cpu]: 100 - $cpuoid&$cpuoid:$router_connectPageTop[$router_name-cpu]: <H1>$router_name CPU usage</H1>Title[$router_name-cpu]: CPU on $router_nameMaxbytes[$router_name-cpu]: 100Options[$router_name-cpu]: gaugeYLegend[$router_name-cpu]: percentShortLegend[$router_name-cpu]: %LegendI[$router_name-cpu]: cpu:Legend1[$router_name-cpu]: CPU usageLegend3[$router_name-cpu]: Peak CPU usagerouters.cgi*Options[$router_name-cpu]: noo, nopercent, nototal, fixunitrouters.cgi*InOut[$router_name-cpu]: norouters.cgi*ShortDesc[$router_name-cpu]:CPUrouters.cgi*Icon[$router_name-cpu]: chip-sm.gifrouters.cgi*InSummary[$router_name-cpu]: yesrouters.cgi*InCompact[$router_name-cpu]: yesrouters.cgi*Mode[$router_name-cpu]: cpurouters.cgi*MBLegend[$router_name-cpu]: 100% usageECHO} else { # lets try hrMIB my (@cpus) = snmpwalk($router_connect,'1.3.6.1.2.1.25.3.3.1.2'); foreach my $tmpcpu (@cpus) { $tmpcpu =~ /(\d+):\d/; my( $instance )=$1; my( $target_name )=$router_name.".cpu".$instance; $target_lines .= <<ECHO;Target[$target_name]: 1.3.6.1.2.1.25.3.3.1.2.$instance&1.3.6.1.2.1.25.3.3.1.2.$instance:$router_connectTitle[$target_name]: $sysname processor $instanceMaxBytes[$target_name]: 100Options[$target_name]: gauge, unknaszero, nooDirectory[$target_name]: $directory_nameWithPeak[$target_name]: wmyYLegend[$target_name]: % UtilisationShortLegend[$target_name]: %Legend1[$target_name]: 1min CPU load on proc$instanceLegend3[$target_name]: Max 5min CPU load on proc$instanceLegendI[$target_name]: cpu$instance:PageTop[$target_name]: <H1>$sysname Processor Load</H1>routers.cgi*ShortDesc[$target_name]: CPU #$instancerouters.cgi*Options[$target_name]: nopercent, nototal, fixunitrouters.cgi*InOut[$target_name]: norouters.cgi*Icon[$target_name]: chip-sm.gifrouters.cgi*InSummary[$target_name]: yesrouters.cgi*InCompact[$target_name]: yesrouters.cgi*Mode[$target_name]: cpurouters.cgi*MBLegend[$target_name]: 100% usageECHO if($#cpus > 0) { $target_lines .= "routers.cgi*Graph[$target_name]: $router_name-allcpu average\n"; $target_lines .= "routers.cgi*InMenu[$target_name]: no\n"; } } if($#cpus > 0) { $target_lines .= <<ECHO;routers.cgi*Title[$router_name-allcpu]: All CPUs on $router_namerouters.cgi*Icon[$router_name-allcpu]: chip-sm.gifrouters.cgi*ShortDesc[$router_name-allcpu]: CPUrouters.cgi*LegendAI[$router_name-allcpu]: cpu :ECHO }}my($rmemoid) = oid_pick($router_connect,$v3opt,"1.3.6.1.4.1.2021.4.6.0");my($smemoid) = oid_pick($router_connect,$v3opt,"1.3.6.1.4.1.2021.4.4.0");if($rmemoid and $smemoid) { # this uses the UCD MIBmy($maxreal, $maxswap) = snmpget($router_connect, "1.3.6.1.4.1.2021.4.5.0","1.3.6.1.4.1.2021.4.3.0");$target_lines .= <<ECHO;######################################## Memory usedTarget[$router_name-memory]: $rmemoid&$smemoid:$router_connect * 1024PageTop[$router_name-memory]: <H1>$router_name Memory Available </H1>Title[$router_name-memory]: Available Memory on $router_nameSetEnv[$router_name-memory]: MRTG_INT_DESCR="Memory"MaxBytes1[$router_name-memory]: $maxrealMaxBytes2[$router_name-memory]: $maxswapOptions[$router_name-memory]: gaugeYLegend[$router_name-memory]: BytesShortLegend[$router_name-memory]: bLegendI[$router_name-memory]: real:LegendO[$router_name-memory]: swap:Legend1[$router_name-memory]: Available real memoryLegend2[$router_name-memory]: Available swap spaceLegend3[$router_name-memory]: Peak available realLegend4[$router_name-memory]: Peak available swaprouters.cgi*Options[$router_name-memory]: nototalrouters.cgi*Mode[$router_name-memory]: memoryrouters.cgi*ShortDesc[$router_name-memory]: Memoryrouters.cgi*Description[$router_name-memory]: Memory available: $router_namerouters.cgi*InOut[$router_name-memory]: norouters.cgi*InSummary[$router_name-memory]: yesrouters.cgi*InCompact[$router_name-memory]: yesrouters.cgi*Icon[$router_name-memory]: chip-sm.gifrouters.cgi*MBLegend[$router_name-memory]: 100% usageECHO}my (@storage) = snmpwalk($router_connect,'1.3.6.1.2.1.25.2.3.1.4');my( $fscnt ) = 0;foreach my $tmps (@storage) { $tmps =~ /(\d+):(\d+)/; next if(!$2); my($instance,$blocksize)=($1,$2); my($diskname,$disksize,$disktype) = snmpget($router_connect,'1.3.6.1.2.1.25.2.3.1.3.'.$instance, '1.3.6.1.2.1.25.2.3.1.5.'.$instance, '1.3.6.1.2.1.25.2.3.1.2.'.$instance); $disktype = $1 if($disktype =~ /\.(\d+)$/); next if(!$diskname or !$disksize or ($disktype!=2 and $disktype!=3 and $disktype!=4)); my($shortdisk) = $instance; $shortdisk = $1 if($diskname =~ /^(\w):/); my($target_name)=$router_name.".disk.".$shortdisk; my($maxsize)= $disksize * $blocksize; if($disktype == 2 ) { # memory use next if($rmemoid); # we already have it $target_lines .= <<ECHO;######################################## Memory usedTarget[$router_name-memory]: 1.3.6.1.2.1.25.2.3.1.6.$instance&1.3.6.1.2.1.25.2.3.1.5.$instance:$router_connect * $blocksizePageTop[$router_name-memory]: <H1>$router_name Memory Used</H1>Title[$router_name-memory]: Memory used on $router_nameSetEnv[$router_name-memory]: MRTG_INT_DESCR="Memory"MaxBytes[$router_name-memory]: $maxsizeOptions[$router_name-memory]: gaugeYLegend[$router_name-memory]: BytesShortLegend[$router_name-memory]: bLegendI[$router_name-memory]: used:LegendO[$router_name-memory]: size:Legend1[$router_name-memory]: Memory usedLegend2[$router_name-memory]: Memory totalLegend3[$router_name-memory]: Peak memory usedLegend4[$router_name-memory]: Peak memory totalrouters.cgi*Options[$router_name-memory]: nototal noorouters.cgi*Mode[$router_name-memory]: memoryrouters.cgi*ShortDesc[$router_name-memory]: Memoryrouters.cgi*Description[$router_name-memory]: Memory used: $router_namerouters.cgi*InOut[$router_name-memory]: norouters.cgi*InSummary[$router_name-memory]: yesrouters.cgi*InCompact[$router_name-memory]: yesrouters.cgi*Icon[$router_name-memory]: chip-sm.gifrouters.cgi*MBLegend[$router_name-memory]: 100% usageECHO } elsif($disktype == 3 ) { # swap use next if($smemoid); $target_lines .= <<ECHO;######################################## Swap usedTarget[$router_name-swap]: 1.3.6.1.2.1.25.2.3.1.6.$instance&1.3.6.1.2.1.25.2.3.1.5.$instance:$router_connect * $blocksizePageTop[$router_name-swap]: <H1>$router_name Swap space used</H1>Title[$router_name-swap]: Swap space used on $router_nameSetEnv[$router_name-swap]: MRTG_INT_DESCR="Swap"MaxBytes[$router_name-swap]: $maxsizeOptions[$router_name-swap]: gaugeYLegend[$router_name-swap]: BytesShortLegend[$router_name-swap]: bLegendI[$router_name-swap]: used:LegendO[$router_name-swap]: size:Legend1[$router_name-swap]: Swap space usedLegend2[$router_name-swap]: Swap space totalLegend3[$router_name-swap]: Peak swap usedLegend4[$router_name-swap]: Peak swap totalrouters.cgi*Options[$router_name-swap]: nototal noorouters.cgi*Mode[$router_name-swap]: memoryrouters.cgi*ShortDesc[$router_name-swap]: Swaprouters.cgi*Description[$router_name-swap]: Swap space used: $router_namerouters.cgi*InOut[$router_name-swap]: norouters.cgi*InSummary[$router_name-swap]: yesrouters.cgi*InCompact[$router_name-swap]: yesrouters.cgi*Icon[$router_name-swap]: chip-sm.gifrouters.cgi*MBLegend[$router_name-swap]: 100% usageECHO } elsif($disktype == 4 ) { # filesystems $fscnt += 1;$target_lines .= <<ECHO;######################################## Filesystem $disknameTarget[$target_name]: 1.3.6.1.2.1.25.2.3.1.6.$instance&1.3.6.1.2.1.25.2.3.1.6.$instance:$router_connect * $blocksizePageTop[$target_name]: <H1>$router_name Disk space used ($diskname)</H1>Title[$target_name]: Disk space used on $router_name ($diskname)SetEnv[$target_name]: MRTG_INT_DESCR="$diskname"MaxBytes[$target_name]: $maxsizeOptions[$target_name]: gaugeYLegend[$target_name]: BytesShortLegend[$target_name]: bLegendI[$target_name]: used:Legend1[$target_name]: Space usedLegend3[$target_name]: Peak usedrouters.cgi*Options[$target_name]: nototal, noorouters.cgi*Mode[$target_name]: generalrouters.cgi*ShortDesc[$target_name]: Disk: $disknamerouters.cgi*Description[$target_name]: $router_name space used on $disknamerouters.cgi*InOut[$target_name]: norouters.cgi*InMenu[$target_name]: yesrouters.cgi*InSummary[$target_name]: yesrouters.cgi*InCompact[$target_name]: yesrouters.cgi*Icon[$target_name]: dir-sm.gifrouters.cgi*Graph[$target_name]: $router_name-filesystems "Disk space" withtotal nooECHO }}if($fscnt) {$target_lines .= <<ECHO;routers.cgi*Options[$router_name-filesystems]: availablerouters.cgi*Icon[$router_name-filesystems]: dir-sm.gifrouters.cgi*ShortDesc[$router_name-filesystems]: Filesystemsrouters.cgi*Title[$router_name-filesystems]: Filesystems on $router_nameECHO}my($laoid) = oid_pick($router_connect,$v3opt,"1.3.6.1.4.1.2021.10.1.5.2");my($laoid2) = oid_pick($router_connect,$v3opt,"1.3.6.1.4.1.2021.10.1.5.3");if($laoid and $laoid2) { # this uses the UCD MIB$target_lines .= <<ECHO;######################################## Load averageTarget[$router_name-lavg]: $laoid&$laoid2:$router_connect / 100PageTop[$router_name-lavg]: <H1>$router_name Load Average</H1>Title[$router_name-lavg]: Load Average on $router_nameSetEnv[$router_name-lavg]: MRTG_INT_DESCR="Load Average"MaxBytes[$router_name-lavg]: 1000Options[$router_name-lavg]: nopercent, gaugeYLegend[$router_name-lavg]: ProcessesShortLegend[$router_name-lavg]: &nbsp;LegendI[$router_name-lavg]: 5min avg:LegendO[$router_name-lavg]: 15min avg:Legend1[$router_name-lavg]: 5-min load averageLegend2[$router_name-lavg]: 15-min load averageLegend3[$router_name-lavg]: Peak 5-min load averageLegend4[$router_name-lavg]: Peak 15-min load averagerouters.cgi*Options[$router_name-lavg]: nomax, nototal, fixunit, noorouters.cgi*Mode[$router_name-lavg]: generalrouters.cgi*ShortDesc[$router_name-lavg]: Load Avgrouters.cgi*Description[$router_name-lavg]: Load average: $router_namerouters.cgi*UnScaled[$router_name-lavg]: nonerouters.cgi*WithPeak[$router_name-lavg]: nonerouters.cgi*InOut[$router_name-lavg]: norouters.cgi*InSummary[$router_name-lavg]: yesrouters.cgi*InCompact[$router_name-lavg]: norouters.cgi*Icon[$router_name-lavg]: load-sm.gifECHO}my($ucoid) = oid_pick($router_connect,$v3opt,"1.3.6.1.2.1.25.1.5.0");if($ucoid) {$target_lines .= <<ECHO;######################################## User countTarget[$router_name-users]: $ucoid&$ucoid:$router_connectPageTop[$router_name-users]: <H1>$router_name Active users</H1>Title[$router_name-users]: Active Users on $router_nameMaxBytes[$router_name-users]: 1000SetEnv[$router_name-users]: MRTG_INT_DESCR="Users"Options[$router_name-users]: nopercent, gaugeYLegend[$router_name-users]: UsersShortLegend[$router_name-users]: &nbsp;LegendI[$router_name-users]: UsersLegend1[$router_name-users]: Active UsersLegend3[$router_name-users]: Peak Active Usersrouters.cgi*Options[$router_name-users]: nomax, nototal, fixunit, noorouters.cgi*Mode[$router_name-users]: generalrouters.cgi*ShortDesc[$router_name-users]: Usersrouters.cgi*Description[$router_name-users]: Users on $router_namerouters.cgi*UnScaled[$router_name-users]: nonerouters.cgi*InOut[$router_name-users]: norouters.cgi*InSummary[$router_name-users]: yesrouters.cgi*InCompact[$router_name-users]: norouters.cgi*Icon[$router_name-users]: user-sm.gifECHO}my($proid) = oid_pick($router_connect,$v3opt,"1.3.6.1.2.1.25.1.6.0");if($proid) {my($maxpr) = snmpget($router_connect, "1.3.6.1.2.1.25.1.7.0");$target_lines .= <<ECHO;######################################## Process countTarget[$router_name-procs]: $proid&$proid:$router_connectPageTop[$router_name-procs]: <H1>$router_name Processes</H1>Title[$router_name-procs]: Processes on $router_nameECHOif($maxpr) { $target_lines .= "MaxBytes[$router_name-procs]: $maxpr\n";} else { $target_lines .= "MaxBytes[$router_name-procs]: 10000\n";}$target_lines .= "routers.cgi*Options[$router_name-procs]: nototal, fixunit, noo" .($maxpr?"":", nomax")."\n";$target_lines .= <<ECHO;SetEnv[$router_name-procs]: MRTG_INT_DESCR="Procs"Options[$router_name-procs]: nopercent, gaugeYLegend[$router_name-procs]: ProcessesShortLegend[$router_name-procs]: &nbsp;LegendI[$router_name-procs]: ProcsLegend1[$router_name-procs]: ProcessesLegend3[$router_name-procs]: Peak Processesrouters.cgi*Mode[$router_name-procs]: generalrouters.cgi*ShortDesc[$router_name-procs]: Processesrouters.cgi*Description[$router_name-procs]: Processes on $router_namerouters.cgi*UnScaled[$router_name-procs]: nonerouters.cgi*InOut[$router_name-procs]: norouters.cgi*InSummary[$router_name-procs]: yesrouters.cgi*InCompact[$router_name-procs]: norouters.cgi*Icon[$router_name-procs]: list-sm.gifrouters.cgi*MBLegend[$router_name-procs]: Max capacityECHO}