snmp(simple network management protocol)简单网络管理协议
command
remote script
NMS:网络管理平台
RRDTool()
cacti(php):有强大的绘图功能
展示
时间序列数据
nagios:
on-》off
状态监测工具
snmp:有三种执行方式,read-only,read-write,trap(被监控端主动发出信息给监控端)
manager:监控端
agent:被监控端
agent:
MIB-II:管理信息库,是为了关联OID和各个组件名的功能
OID:对象标识符
IDS:***检测系统
IPS:***防御系统
community
net-snmp(agent)
net-snmp-utils(NMS:command)
yum install net-snmp net-snmp-utils
rpm -ql net-snmp | less
service snmpd start
snmpwalk -v 2c -c public localhost host
ls /usr/share/snmp/mibs(里面都是OID)
snmpget -v 2c -c public localhost HOST-RESOURCES-MIB::hrSystemUptime.0(是上条命令执行产生的结果)
vim /etc/snmp/snmp.conf
view systemview included .1.3.6.2.1.6(这是查看主机上面tcp状态的配置)
service snmpd restart
snmpwalk -v 2c -c public localhost tcp
vim /etc/snmp/snmp.conf
com2sec notConfiguser 127.0.0.1 mypublic(相当于访问控制)
com2sec notConfiguser 172.16.0.0/16 mypublic
service snmpd restart
snmpwalk -v 2c -c mypbulic 172.16.100.1 host
snmpnetstat -v 2c -c mypublic -Can -Cp tcp 172.16.100.1
rrdtool:存放这种获取被监控主机信息数据的地方
rra(round rodbin archive)
rrd文件:
ds(data source)数据源
PDP:primary data point,指一个收到的数据
RRA:把多少个数据信息归档成一组,把这组数据交给CDP进行聚合计算
CDP:通过聚合计算之后得出的结果
解析度:resolution,指的是时间跨度间隔的大小
time slot时间槽
5s,生成一个随机数-》
5s
50s
500s
DS:ds-name:DS:dst argume
1:
2369
GAUGE:2369
COMPUTE:2133
DERIVE:2133
ABSOLUTE:1258
yum install rrdtool rrdtool-devel rrdtool-perl
rrdtool create test.rrd --step 5(指的是每五秒接受一个数据) DS:testds:GAUGE(这是指数据类型):8:0:U RRA:AVERAGE:0.5(这是大于等于0.5的比例就是未知的数据):1(每一个数据就平均一下,这一个需要15=5秒):17280(864001(指一天时间)/5得到的结果)RRA:AVERAGE:0.5:10(每十个数据取一次平均值,这是十个总共需要105=50秒):3546(864002(指两天时间)/50) RRA:AVERAGE:0.5:100:1210(86400*7(指一个星期的时间)/500)
rrdtool update test.rrd N:$RANDOM
rrdtool fetch test.rrd AVERAGE
rrdtool create test.rrd DS:ds1 DS:ds2
rrdtool update test.rrd timestamp:32:24
rrdtool update test.rrd -t ds2:ds1 40:30
rrdtool create test.rrd --step 5 DS:testds:GAUCE:8:0:U RRA:AVERAGE:0.5:1:17280 (0.5表示一个PDP中有0.5个或者超过0.5个PDP的值是unknown,则该cpd就无法合成,默认每五分钟产生一个PDF)RRA:AVERAGE:0.5:10:3456(0.5表示一个PDP中有5个或者超过5个PDP的值是unknown,则该cpd就无法合成) RAA:AVERAGE:0.5:100:1210(0.5表示一个PDP中有50个或者超过50个PDP的值是unknown,则该cpd就无法合成)
vim genval.sh
#! /bin/bash
while true
do
rrdtool update test.rrd N:$RANDOM
sleep 5
done
rrdtool fetch -r 5 test.rrd AVERAGE
rrdtool fetch -r 10 test.rrd AVERAGE
rrdtool fetch -r 50 test.rrd AVERAGE
rrdtool graph a.png --step 5 -s 134567985 -t Test -v vtest DEF:vtest=/root/test.rrd:testds:AVERAVG LINE1:vtest#ff0000:testline
把两个不同跨度的时间绘制成一张图:
rrdtool graph a.png -s 1341664750 DEF:vartest=/root/test.rrd:testds:AVERAGE:step=5 DEF:vartest2=/root/test.rrd:testds:AVERAGE:step=50 LINE1:vartest#FF0000:"testline" LINE1:vartest2#00FF00:"testline2"
获取数据库的被查询次数的信息:
rrdtool create mysql.rrd --step 3 DS:myselect:COUNTER:5:0:U RRA:AVERAGE:0.5:1:28800 RRA:AVERAVG:0.5:10:2880 RRA:MAX:0.5:10:2880 RRA:LAST:0.5:10:2880
mysql -e "show global status like 'com_select'"
mysql --batch -e "show global status like 'com_select'" | awk '/Com_select/{print $2}'
vim getselect.sh
#! /bin/bash
while true
do
SELECT=mysql --batch -e "show global status like com_select" | awk '/com_select/{print $2}'
rrdtool update mysql.rrd N:$RANDOM
sleep 3
done
vim insert.sh
#! /bin/bash
for i in {1..20000}
do
mysql -e "insert into testdb.tb1(name) values('stu$i')"
mysql -e "select * from testdb.tb1" &> /dev/null
done
mysql>create database testdb;
mysql>create table tb1 (id int unsigned not null auto_increment primary key,name char(50) not null)
rrdtool fetch -r 3 mysql.rrd AVERAGE
rrdtool fetch -r 30 mysql.rrd LAST
rrdtool graph mysql.png -s 1341667608 -t “mysql select” -v "selects/3" DEF:select3=mysql.rrd:myselect:AVERAGE:step=3 LINE1:select3#FF0000:"SELECT"
rrdtool graph mysql.png -s 1341667608 -t “mysql select” -v "selects/3" DEF:select30=mysql.rrd:myselect:AVERAGE:step=30 DEF:max30=mysql.rrd:myselect:MAX:step=30 DEF:last30=mysql.rrd.myselect:LAST:ste
p=30 LINE1:select3#FF0000:"SELECT" GRPINT:last30:LAST:"CURRENT\: %10.2lf" GRPINT:max:30:MAX:"MAXIMUM\: %6.2lf"
cacti:
rrdtool create
周期性执行能够取得数据的命令,并将取回的数据保存至rrd文件当中
利用rrdtool绘图并展示
php开发网页程序:
lamp,lnmp并且要启用--enable-sockets
插件机制:
thold:实现报警功能
模板:
图形模板
数据模板
主机模板
cacti-----》保存数据----》图形模板
收集方法:数据收集方法
数据查询:xml格式数据收集方法
数据输入方法:命令或者脚本
脚本:
只需要指定如何获取数据,并且获取到的数据经过处理后要按规定输出:
TAG:data TAG:data
input:30 output:40
安装配置cacti:
首先要搭建lamp平台
/var/www/html/cacti
http://172.16.100.1/cacti/
vim /etc/httpd/extra/httpd-vhosts.conf
<VirtualHost *:80>
ServerName cacti.magedu.com
DocumentRoot /web/vhosts/cacti
<Directory "/web/vhosts/cacti">
Options Indexes
AllowOverride node
Require all granted
</Diretory>
Errorlog "logs/cacti-error_log"
CustomLog "logs/cacti-access_log" common
</VirtualHost>
tar -zxvf cacti-0.8a.tar.gz -C /web/vhosts
cd /web/vhosts
ln -sv cacti-0.8.8a cacti
service httpd restart
cd cacti
mysqladmin create cactidb
mysql cactidb < cacti.sql
mysql -e "grant all on cactidb.* to cactiuser@localhost identified by 'cactiuser'"
mysqladmin flush-privileges
mysql -ucactiuser -p
cd /cacti/include
vim config.php
$url_path = "/";
useradd cactiuser
chown -R cactiuser:cactiuser rra/ log
echo "/5 * /usr/local/php/bin/php /web/vhosts/cacti/poller.php &> /dev/null" > /var/spool/cron/cactiuser
crontab -u cactiuser -e
snmpnetstat -v 2c -c mypublic -Can -Cp tcp localhost
vim tcpconn.sh
#! /bin/bash
SNMPNETSTAT=/usr/bin/snmpnetstat
TEMPFILE=mktemp /tmp/$1_tcpcpnn.XXXX
$SNMPNETSTAT -v 2c -c $2 -Can -Cp tcp $1 > $TEMPFILE
ESTABLISHED=grep -i "ESTABLISHED" $TEMPFILE | wc -l
TIMEWAIT=grep -i "TIMEWAIT" $TEMPFILE | wc -l
SYNRECEIVED=grep -i "SYNRECEIVED" $TEMPFILE | wc -l
echo -n "established:$ESTABLISHED timewait:$TIMEWAIT syncreived:$SYNCREIVED"
ab -c 2 -n 10000 http://172.16.100.1/index.php
./tcpconn.sh localhost mypublic
cp tcpconn.sh /web/vhost/cacti/scripts/
把自己写的脚本导入到cacti中:
data input methods-->data templates-->host templates-->graph templates-->data source-->graph management
使用插件:
tar -zxvf thold-v0.4.9-3.tgz -C /web/vhosts/cacti/plugins/
tar -zxvf settings-v0.71-1.1tgz -C /web/vhosts/cacti/plugins/
转载于:https://blog.51cto.com/12406012/2368183