首页 > 代码库 > cacti——snmp和rrdtool
cacti——snmp和rrdtool
通过SNMP收集信息,使用RRDTool进行绘图,通过cacti(PHP)进行展示,时间序列数据。(nagios监控服务器的状态)
SNMP:
NMS:监控端,网络管理工作站
Agent:被监控端
NMS向Agent发送查询请求、管理指令等,双方通过comminuty进行认证。
SNMPv1:comminuty,三种模式,read-only,read-write,trap(被监控端主动向监控端发送消息)
SNMPv2:community-strint-based,SNMPv2c
SNMPv3:强认证
MIB(Management Informatin Base)对应唯一标识和名称。
可以被监控的项目:
Fault Management:故障管理
Configuration Management:配置管理
Accounting Management:记账管理,用户审计
Performance Management:性能管理
Security Management:安全管理。IDS(入侵检测)IPS(入侵防御)
协议:
NMS:使用UDP 162,当使用trap功能时打开端口
Agent:使用UDP 161。
Community:
使用两个,一个public(ro),一个private(rw)
Operations:
get:获得指定节点信息
getnext:获得指定节点的子节点信息
getbulk(v2, v3):
set:发起控制指令
getresponse:获取响应,客户端发起
trap:
notification(v2, v3)
inform(v2, v3)
report(v2, v3)
net-snmp(Agent)
net-snmp-utils(NMS:command)
RRDTool:
Round Robin Database Tool:
RRD:存储固定大小的数据,轮询覆盖。是时间序列的数据库,有时间戳。
RRA:round robin archive,数据分组再进行计算,CDP计算的平均值
CDP:聚合计算节点,PDP计算的平均值
PDP:Primary Data Point,时间为步长,将数据分组写入时间槽中。
一个rrd文件:
DS:(data source)数据源,至少一个
rrdtool
rrdtool - [workdir]| function
create:
5s,生成一个随机数→rrd文件中,对pdp做聚合
rrdtool create filename [—start|-b start time] [—step|-s step] [—no-overwrite] [DS:ds-name:DST:dst arge] [RRA:CF:cf argu]
--start|-b start time(default:now – 10s)
--step|-s step(default:300 seconds)
[DS:名称(1-19characters):数据源类型(GAUGE,COUNTER,DERIVE,ABSOLUTE,COMPUTE):heartbeat:min:max]
GAUGE:保存原数据,不做修改,PDP
COUNTER:相对上一个数据的相对值,递增
DERIVE:相对上一个数据的相对值,可增减
ABSOLUTE:相对于初始值的相对值
COMPUTE:
heartbeat:误差值,未到达则*UNKNOWN*
min,max:最小和最大有效数值
[RRA:AVERAGE|MIN|MAX|LAST:xff:steps:rows]
AVERAGE
MIN|MAX
xff:unknown的比例为多少时定义为unknown
steps:将几个PDP聚合进行计算
rows:需要保存多久,2天 / PDP 5s CDP 10
eg:rrdtool create test.rrd --step 5 DS:testds:GAUGE:8:U:U RRA:AVERAGE:0.5:1:17280 RRA:AVERAGE:0.5:10:3456 RRA:AVERAGE:0.5:100:1210
update updatev
在指定的时间间隔内,向CREATE创建的数据库中提供数据
rrdtool {update | updatev} filename [--template|-t ds-name[:ds-name]...] N|timestamp:value[:value...] at-timestamp@value[:value...] [timestamp:value[:value...] ...]
[--template|-t ds-name[:ds-name]...] 向指定的ds中传输数据
N|timestamp:value[:value...] 时间:N指现在
eg:rrdtool update test.rrd N:$RANDOM
rrdtool fetch -r 5 test.rrd AVERAGE #查看每5秒数据
graph
rrdtool graph|graphv filename [option ...] [data definition ...] [data calculation ...] [variable definition ...] [graph element ...] [print element ...]
rrdtool graph 生成的图片文件名.png 选项 [date definition数据选项] [data calculation数据计算] [variable definition变量定义] [graph element图形元素] [print element显示图形]
[options]
[-s|—start time]开始时间
[-e|—end time] 终止时间
[-S|—step seconds] 时间跨度
[-t|—title string] 图表标题
[-v|—vertical-label string]竖向标签
[-w|—width pixels]
[-h|—height pixels]
[-j|—only-graph]只绘制图形
[-D|—full-size-mode]自适应,自动放大缩小图像
[-u|—upper-limit value]上限,数值上限
[-l|—lower-limit value]下限
[-r|—rigid]固定上下限、不再变化
[-A|—alt-autoscale]自动缩放
[-J|—alt-autoscale-min]自动缩放最小值
[-M|—alt-autoscale-max]自动缩放最大值
[-N|—no-gridfit]不显示网格线
X-Axis
[-x|--x-grid GTM:GST:MTM:MST:LTM:LST:LPR:LFM]GTM:GST 以什么为单位,隔多久显示,基准网格线
MTM:MST 以什么为单位,隔多少显示,主网格线
LTM:LST 以什么为单位,隔多久显示一次,横轴网格线标签
LPR:LFM 时间标签的显示格式
[-x|--x-grid none]
--x-grid MINUTE:10:HOUR:1:HOUR:4:0:%X
Y-Axis
[-y|--y-grid grid step:label factor]纵轴刻度 步长:标签 多久显示[-y|--y-grid none]
[-Y|--alt-y-grid]
[-c|--color COLORTAG#rrggbb[aa]]
"BACK" background, 背景色
"CANVAS" for the background of the actual graph, 图表背景色
"SHADEA" for the left and top border, 左边和上边的线颜色
"SHADEB" for the right and bottom border, 右边和上边的线颜色
"GRID", "MGRID" for the major grid,
"FONT" for the color of the font, 字体颜色
"AXIS" for the axis of the graph, 坐标轴
"FRAME" for the line around the color spots,边框
"ARROW" for the arrow head pointing up and forward.箭头
[-n|--font FONTTAG:size:[font路径]] 指定字体(支持黑体)
[-R|--font-render-mode {normal,light,mono}] 字体模式:正常,亮色,斜体
[-a|--imgformat PNG|SVG|EPS|PDF] 输出格式
[date and variables]
DEF/CDEF/VDEF:获取数据的方式
dump
info
cacti——snmp和rrdtool