SNMP和rrdtool详解介绍

snmp全称simple network manage protocol,snmp能够通过简单的命令获取远程主机上的服务状况,以实现对远程服务的监控。snmp至今经历了3个版本,snmpv1,snmpv2,snmpv3。snmp简单工作原理就是监控端的一台主机向被监控端的一台主机发出命令,被检控端的主机在本机上安装服务能够识别到监控端主机发过来的命令并给予反馈信息。由于这种监控的局限性,保证被监控端的主机只识别指定主机发来的监控信息,双方需要建立识别的信息,这就是communite的作用。在snmpv1版本中提供了3种communite方式,分别是read-only,read-write和trap。read-only就是监控端只能接受到被监控端发过来的信息;read-write就是监控端可以直接操作被监控端的主机,例如关机等操作;trap就是被监控端可以主动发出信息告知监控端来监控自己。snmpv2相对于v1版本在功能上做了强大的改动,但基本功能并没有改变。snmpv3版本在认证方面做了更加安全的防范措施,并且在数据传输方面也大大增强了其安全性。但是,目前使用的最多的依然是snmpv1的版本。

snmp有一个非常重要的概念就是MIB(management infromation base),全称管理信息库。它是网络管理数据的标准,在这个标准里规定了网络代理设备必须保存的数据项目,数据类型,以及允许在每个数据项目中的操作。所有数据采用树形结构保存。当前广泛使用的是第二版MIB,称为MIB-II。任何一台主机都会提供一个MIB-II。

NMS = Network Management System网络管理系统。是SNMP中的控制端,也是网络管理的发起者。Agent代理,为被管理的设备提供SNMP的能力,负责设备与NMS的通信。

关于snmp的软件包有两个,一个是net-snmp和net-snmp-utils,前面那个是被监控端需要用到的工具,后面那个是监控端用到的命令。但是如果监控端需要用到trap功能的时候,在监控端上还需要装net-snmp这个包才行。由于下面的功能全是在本机上介绍的。所以直接把这两个包全部装在本机上。yum install net-snmp net-snmp-utils。可以使用rpm -ql net-snmp查看安装snmp时所装的所有文件。使用netstat -tunpl | grep snmp可以发现snmp监听在tcp的199和udp的161端口上。如果监控端还要启动trap功能的话,还需要把snmptrapd这个服务器启动起来。service
snmptrapd start。snmptrapd默认监听在udp的162端口上面。可以通过snmpwalk -v 2c -c public localhost来对一个主机上资源获取服务器上的资源状况。snmpwalk的支持的命令和参数非常多,可以获取到的资源状况也非常多。

snmp的默认配置文件在/etc/snmp/snmpd.conf文件中。这个文件中有如下的信息可以改变指定监控的主机和community:

#sec.name        source          community

com2sec notConfigUser   default         public

默认就是允许所有的主机通过这个public到我们的主机上进行监控,显示这是不安全的做法,因为是本机自己监视自己,所以可以改成:

com2sec notConfigUser 127.0.0.1 qiguopublic  ,而所有的mibs库全部放在/usr/share/snmp/mibs/目录下面。

RRDtool是指Round Robin Database 工具(环状数据库)。Round robin是一种处理定量数据、以及当前元素指针的技术。想象一个周边标有点的圆环,这些点就是时间存储的位置。从圆心画一条到圆周的某个点的箭头,这就是指针。就像我们在一个圆环上一样,没有起点和终点,你可以一直走下去。过来一段时间,所有可用的位置都会被用过,该循环过程会自动重用原来的位置。这样,数据集不会增大,并且不需要维护。我们使用RRDtool来处理RRD数据库。使用它向RRD数据库存储提取数据。通过对RRDtool工具的使用可以绘图来达到流量图监控的目的。

rrdtool在linux上是不自带的,需要自己手动安装,这里我们采用源码包的方式来安装rrdtool。准备的软件包是rrdtool-1.4.5.tar.gz。下面开始安装过程:

tar xf rrdtool-1.4.5.tar.gz

cd rrdtool-1.4.5

./configure --prefix=/usr/local/rrdtool

make && make install

为了使用的方式。把/usr/local/rrdtool/bin加如path环境变量

vi ~/.bash_profile

加上PATH=$PATH:$HOME/bin:/usr/local/rrdtool/bin

source .bash_profile重新读取配置文件

下面是使用RRDtool的一些常用选项,通过这些选项便可生成绘图。

1.使用rrdtool创建各种类型、特性的RRD环型数据库

rrdtool create filename [--start|-b start time] [--step|-s step] [DS:ds-name:DST:dst arguments] [RRA:CF:cf arguments]

这个语法的作用是创建一个初始化的rrdtool数据库文件;filename就是要创建的文件的名称;--start time设定rrd数据库加入第一个数据时的时间,默认是10秒前;--step step时间跨度,表示每隔多少时间接受一个数据;DS指定一个数据源,一个数据源可以聚合多次;RRA指定如何做聚合,归档的。

DS:ds-name:DST:dst arguments具体介绍如下:

DS固定格式,表示数据源;

ds-name数据源的名称,这个名称要唯一,并且最长最多只能19个字符

DST数据源的类型,数据源的类型有GAUGE,COUNTER,DERIVE,ABSOLUTE,COMPUTE5个参数

GAUGE表示初A始值,保存一个数据原来的值,不做任何改变

COUNTER表示相对值,通常都是相对上一个数据的值,而且必须比上一个数据的值要大。

DERIVE给COUNTER一样,但是没有counter的限制

ABSOLUTE根据原始值来取得一个相对的值

COMPUTE用于存放对RRD中的其他数据源进行公式计算的结果

dst arguments数据源类型的参数,默认有3个参数heartbeat,min,max

heartbeat表示当数据到来的时候,最长多少时间内认为其是对应槽内的数据

min表示保存到来的数据的最小值,如果不知道最小值默认可以使用U

max表示保存到来的数据的最大值,如果不知道最大值默认可以使用U

RRA:CF:cf arguments具体介绍如下:

RRA关键字

CF聚合函数,有4种聚合的类型,AVERAGE、MIN、MAX、LAST。分别表示平均,最小,最大,当前。

cf arguments聚合函数的参数,默认格式为xff:steps:rows

xff表示指定unknown的比例为多大时候,把他定义为unkown

steps表示聚合函数对几个PDP做一次聚合

rows表示一共保存多少个聚合的结果

例:

rrdtool create test.rrd --step 5 DS:qiguo:GAUGE:8:U:U RRA:AVERAGE:0.5:1:17280 RRA:AVERAGE:0.5:10:3456 RRA:AVERAGE:0.5:100:1210

上例设置了一个名为 test.rrd的RRD,它每5秒接收一个随机值。如果超过8秒没有提供数据,值变为*UNKNOWN*。其可以接受任何的值。本例中同时还定义了几个归档区。第一个RRA归档区存储1天内的随机值(17280*5)。第二个RRA存储两天内的平均值(3456*10 *5),第三个存储一周内的平均值(100*5*1210)

rrdtool info test.rrd可以查看test.rrd的具体内容。

2.为rrd环型数据库提供数据:

rrdtool {update | updatev} filename [--template|-t ds-name[:ds-name]...] N|timestamp:value[:value...] [email protected][:value...] [timestamp:value[:value...] ...]

filename为要更新的RRD数据库的名称。

--template|-t ds-name[:ds-name]... :-t ds-name要更新RRD数据库中数据源的名称

N|timestamp:value[:value...]:时间:要更新的值...

例:

while true;done

rrdtool update test.rrd N:$RANDOM

sleep(5);

done

rrdtool fetch -r 5 test.rrd AVERAGE可以查看为rrd环形数据库生成的数据

-r表示多少时间生成一次数据

3.绘制rrd环型数据库中的采集到的数据

rrdtool graph filename [option ...] [data definition ...] [data calculation ...] [variable definition ...]

[graph element ...] [print element ...]

filename 要绘制的图片名称

Time range时间范围

[-s|--start time]启始时间

[-e|--end time]结束时间

[-S|--step seconds]步长

[-t|--title string]图片的标题

[-v|--vertical-label string] Y轴说明

[-w|--width pixels] 显示区的宽度

[-h|--height pixels]显示区的高度

[-j|--only-graph]只绘制图像

[-u|--upper-limit value] Y轴正值最大值

[-l|--lower-limit value] Y轴负值最小值

[-r|--rigid]固定Y轴的值,不进行缩放

[-A|--alt-autoscale]自动缩放

[-J|--alt-autoscale-min]只自动缩放最小值

[-M|--alt-autoscale-max]只自动缩放最大值

[-N|--no-gridfit]不显示网格线

[data definition ...]data and variables获取画图的数据,格式如下:

DEF:vname=rrdfile:ds-name:CF[:step=step][:start=time][:end=time]

vname定义一个变量保存数据

rrdfile就是前面生成的rrd文件

ds-name就是数据源的名称

CF就是聚合函数

step表示每过多长时间获取数据

LINE[width]:value[#color][:[legend]]

LINE指定画线条图,默认使用LINE1

value表示以前面DEF定义的变量vname为值进行画图

color表示画出来的图的颜色

legend表示对应图下面的文本信息

例:

rrdtool graph qiguo.png -s 1400129745 -t Test -v YTest DEF:mytest=test.rrd:qiguo:AVERAGE:step=5 LINE1:mytest#FF0000:testline

注:这里的1400129745是通过上面rrdtool fetch根据观察而生成的时间戳数字

上述实例就生成了一个从timestamp开始的一个名为qiguo.png的线条图。图片如下:

但是图片只有一条信息,那么如何在一个图片上绘制两条不同的线呢?

只需要绘图的时候多生成一个绘图数据和绘图函数即可:

rrdtool graph qiguo2.png -s 1400130895 -t Test -v YTest DEF:mytest=test.rrd:qiguo:AVERAGE:step=5 DEF:mytest2=test.rrd:qiguo:AVERAGE:step=50 LINE1:mytest#FF0000:testline LINE2:mytest2#00FF00:test2line

图片如下:

但是我们观察rrdtool的官方站点的时候很多图下面都有最大值,最小值,当前值等。那么需要使用另一个函数GPRINT来完成。默认格式GPRINT:vname:CF:format

vname是打印那个变量对应的值

CF是聚合函数

format是显示的格式

例:

rrdtool create test.rrd --step 5 DS:qiguo:GAUGE:8:U:U RRA:AVERAGE:0.5:1:17280 RRA:MIN:0.5:1:17280 RRA:MAX:0.5:1:17280 RRA:LAST:0.5:1:17280

写一个脚本while.sh,让它执行

while true;done

rrdtool update test.rrd N:$RANDOM

sleep(5);

done

rrdtool graph qiguo4.png -s 1400133115 -t Test -v YTest DEF:mytest=test.rrd:qiguo:AVERAGE:step=5 DEF:max=test.rrd:qiguo:MAX:step=5 DEF:min=test.rrd:qiguo:MIN:step=5
DEF:last=test.rrd:qiguo:LAST:step=5 LINE1:mytest#FF0000:testline GPRINT:last:LAST:"cur\:%6.2lf" GPRINT:min:MIN:"min\:%6.2lf" GPRINT:max:MAX:"max\:%6.2lf"

最终生成的图片如下:

SNMP和rrdtool详解介绍,布布扣,bubuko.com

时间: 2024-08-08 01:28:27

SNMP和rrdtool详解介绍的相关文章

iOS:核心动画的详解介绍:CAAnimation(抽象类)及其子类

核心动画的详解介绍:CAAnimation(抽象类) 1.核心动画基本概念 Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍! 使用它需要先添加QuartzCore.framework和引入对应的框架<QuartzCore/QuartzCore.h> ,在iOS7中不需要 2.动画分类 基本动画    CABasicAnimation 关键帧动画  CAKeyframeAnimation 动画组     CAAnimationGro

CSS3的3D转换效果详解介绍

CSS3的3D转换效果详解介绍:本章介绍一下CSS3的3D转换效果,此效果的实现依靠的是transform属性,3D转换只是此属性的部分应用,更多相关内容可以参阅CSS3的transform属性总略介绍一章节.掌握3D转换效果,可以从三个方法作为突破口,分别是rotateX, rotateY, rotateZ,在2D变换过程中rotate()函数的应用,它表示旋转的意思,由于是2D变换,所以它只是在一个平面进行旋转,所以无需细分,具体可以参阅CSS3的2D转换效果详细介绍一章节. 下面分别介绍一

S?D?I?与?A?S?I 接口详解介绍

分量编码 在对彩色电视信号进行数字化处理和传输是,一种常用的方式是分别对其3个分量(Y,R-Y,B-Y)进行数字化编码.这就是分量分量编码,另外还有全信号编码,全信号编码是对彩色全电视信号直接进行编码形成数字视频信号.它的抽样频率一般采用fs=4fsc,这样对NTSC制和PAL制信号形成便于进行行间,场间,帧间的信号的正交抽样结构. 1. 抽样频率 当亮度信号Y的带宽为5.8MHz~6MHz,两个色差信号(R-Y)和(B-Y)的带宽均为2MHz是,可以获得满意的带宽. 2. 电视演播室分量编码国

UITabBarController详解(介绍和设置)

[objc] view plaincopy - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Override point for customization af

OpenStack基础知识-tox的详解介绍

1.tox简介 tox是通用的虚拟环境管理和测试命令行工具.tox能够让我们在同一个Host上自定义出多套相互独立且隔离的python环境,每套虚拟环境中可能使用了不同的 Python 拦截器/环境变量设置/第三方依赖包.所以 tox 最典型的应用就是用于测试 Python 程序的兼容性了.tox是openstack社区最基本的测试工具,比如python程序的兼容性.UT等. 它的目标是提供最先进的自动化打包.测试和发布功能. 1)作为持续集成服务器的前端,大大减少测试工作所需时间: 2)检查软

Linux rpm 命令参数使用详解[介绍和应用]

RPM是RedHat Package Manager(RedHat软件包管理工具)类似Windows里面的“添加/删除程序” rpm 执行安装包二进制包(Binary)以及源代码包(Source)两种.二进制包可以直接安装在计算机中,而源代码包将会由RPM自动编译.安装.源代码包经常以src.rpm作为后缀名. 常用命令组合: -ivh:安装显示安装进度--install--verbose--hash-Uvh:升级软件包--Update:-qpl:列出RPM软件包内的文件信息[Query Pac

详谈Android apk打包:关于APK数字签名详解介绍

本文主要为大家详细讲解APK数字签名方面的内容,并介绍APK调试模式和发布模式下数字签名的方式. 本文转自:http://www.jizhuomi.com/android/environment/293.html 1.什么是数字签名 数字签名就是为你的程序打上一种标记,来作为你自己的标识,当别人看到签名的时候会知道它是与你相关的. 2.为什么要数字签名 最简单直接的回答:系统要求的. Android系统要求每一个Android应用程序必须要经过数字签名才能够安装到系统中,也就是说如果一个Andr

Selenium常用API详解介绍

转至元数据结尾 由 黄从建创建, 最后修改于一月 21, 2019 转至元数据起始 一.selenium元素定位 1.selenium定位方法 2.定位方法的用法 二.控制浏览器操作 1.控制浏览器窗口大小 2.控制浏览器后退.前进 3.刷新页面 三.WebDriver常用方法 1.WebDriver 常用方法 2.其它常用方法 四.模拟鼠标操作 1.关于鼠标操作的其它方法 五.模拟键盘操作 六.获取断言信息 七.设置元素等待 1.显示等待 2.隐式等待 八.定位一组元素 九.多表单切换 十.多

详解介绍Selenium常用API的使用--Java语言(完整版)

一共分为二十个部分:环境安装之Java.环境安装之IntelliJ IDEA.环境安装之selenium.selenium3浏览器驱动.selenium元素定位.控制浏览器操作.WebDriver常用方法.模拟鼠标操作.模拟键盘操作.获取断言信息.设置元素等待.定位一组元素.多表单切换.多窗口切换.下拉框选择.警告框处理.文件上传.浏览器cookie操作.调用JavaScript代码.获取窗口截屏: 虽然,学习Maven需要增加你的学习成本,但如果你需要长期使用Java编程语言,或者想用Java