prtg

http://www.paessler.com/prtg/features

prtg的sensor技术

数据库监视

Flexible Alerting

  • 9 notification technologies: Send Email, SMS/Pager, syslog and SNMP Trap, HTTP request, Event log entry, Play alarm sound files, Amazon SNS, any external technology that can be triggered by an EXE or batch file
  • Status alerts (up, down, warning)
  • Limit alerts (value above/below x)
  • Threshold alerts (above/below x for y minutes)
  • Multiple condition alerts (x and y are down)
  • Escalation alerts (extra notifications every x min during downtime)
  • Dependencies (avoid alarm floods)
  • Acknowledge Alarms (no more notifications for this alarm)
  • Alert Scheduling (no low priority alerts at night)

通知投递  告诉prtg如何发送消息

通知    定义消息的类别与内容

通知触发  

prtg api编程

<prtg>
<text>
</text>
<error>
</error>
<result>
</result>
</prtg>

<prtg>
<result>
<channel>a</channel>
<value>10</value>
</result>
<result>
<channel>b</channel>
<value>20</value>
</result>
</prtg>

[root@109-com1 scripts]# cat rx
#!/bin/bash
eth=eth0
RXpre=$(ifconfig ${eth} | grep bytes | awk  '{print $2}'| awk -F":" '{print $2}')
TXpre=$(ifconfig ${eth} | grep bytes | awk '{print $6}' | awk -F":" '{print $2}')
sleep 1
RXnext=$(ifconfig ${eth} | grep bytes | awk  '{print $2}'| awk -F":" '{print $2}')
TXnext=$(ifconfig ${eth} | grep bytes | awk '{print $6}' | awk -F":" '{print $2}')

echo "0:$(((${RXnext}-${RXpre})/1024)):recv!!!KB/s"

[root@109-com1 scripts]# cat daxiao
#!/bin/bash
daxiao=`ls -l  /var/log/asterisk/messages |cut -d " " -f5`
echo "0:$daxiao:messages!!!!!!!"

prtg change web default sound  
1.mp3与ogg同时替换命名为beep
2.并且要将mp3转换为ogg格式
3.清空浏览器缓存

prtg邮件发送三步走
1.通知投递,设置smtp地址与用户名与密码
2.通知
3.触发

prtg api
ASAP as soon as possible
172.16.1.14:8080

prtg
live graph 2小时120个值,1分钟扫描间隔
2天

SSH Script sensors

only one channel per sensor

The returned data for standard SSH Script sensors must be in the following format:
returncode:value:message

Value has to be a 64 bit integer or float and will be used as the resulting value for this sensor (e.g. bytes, milliseconds, etc.),
message can be any string and will be stored in the database.

[%sitename] %device %name %status %down (%message)

C:\ProgramData\Paessler\PRTG Network Monitor\

#!/bin/bash

port="80"
service="WEB"

NETSTAT=`which netstat`
ID=`which id`

die(){
    exit 999
}

is_root(){
    local id=$($ID -u)
    if [ $id -ne 0 ]
    then
        echo "4:500:You have to be root to run $0."    # returncode 4 = put sensor in DOWN status
        die
    fi
}

preparation(){
    if [ ! -x $NETSTAT ]
    then
        echo "2:500:netstat not found."
        die
    fi
    if [ ! -x $ID ]
    then
        echo "2:500:id not found."    # returncode = 2 = put sensor in DOWN status
        die
    fi
    is_root
}

check_service(){
    serviceIsRunning=false
    openPorts=$($NETSTAT -tulpn | grep -vE '^Active|Proto' | grep 'LISTEN' | awk '{ print $4}' | awk -F: '{print $NF}' | sed '/^$/d' | sort -u)
    for openPort in $openPorts
    do
        if [ "$port" == "$openPort" ]
        then
            serviceIsRunning=true
            echo "0:200:$service is running."    # returncode 0 = put sensor in OK status
            break
        fi
    done
    if [ $serviceIsRunning == false ]
    then
        echo "1:404:$service is not running."    # returncode 1 = put sensor in WARNING status
    fi
}

main(){
    preparation
    check_service
}

main

These few lines cover a lot of simple service check needs.
Here's a super simple service check script I'm using on Ubuntu systems. When you set it up in PRTG, just put the service name you want to check in the parameter box.
That becomes $1 in the script. $? is the status of the service as reported by the service command.
This is all assembled in the echo to be formatted to make PRTG show pretty and informative results.

#!/bin/sh

service $1 status 2>&1 1>/dev/null

if [ $? -ne 0 ]; then
  echo "1:$?:$1 down"
else
  echo "0:$?:OK"
fi

05-08 08:09