Cacti进阶应用一:汇总流量图-将数据合并后作图

[

在使用Cacti方便快捷的建立监控图时,往往根据实际应用必须监控几台甚至上百台服务器的汇总流量图来观察该应用服务器组的总流量等指标。

这里我们就来介绍如何用cacit快速的建立汇总流量图,其他汇总图建立方法相同;
一、创建CDEF
1、点击cacti左边菜单中的graph Management下的CDEFs
2、点击CDEF‘s右边的add,增加一个名为Turn All Data into Bits项
3、在CDEF Items表格中点击add,输入如下图:依次创建以下三个Items;

4、完成后如下图:

CDEF item创建完成。

二、创建new graph
1、点击cacti左边菜单中的graph Management

2、在右边点击add出现如下图,直接选择create

3、在Graph Configuration表格中的title输入新图的名字;如IDC all interface traffic in(bits/sec)

4、表格最下的选项Vertical Label是纵轴的标识,这里我们填入Bits Per Second

5、完成后点击右下方的create,会在当前页面中间出现如下表格:

6、点击graph item 表格中的add按钮,输入信息如下图:

说明:因为我们会在最后汇总数据所以添加时除了data source和类型相互关联不可以选错,都可以任意搭配;
请多熟悉其中的关联性,建议多测试几次;
data source:数据来源就是你要汇总的流量之一;
color:选择颜色这里可以任意选择;
Graph Item Type:图形(我选择的是AREA区域类型,要累加的流量图请选择stack)
CDEF Function:这里一定要选择“Turn bytes into Bits”
点击create后,我们就创建了第一个流量图,会在页面上显示出来;继续添加其他流量图,方法同上;

7、汇总流量数据,并标识当前流量、平均流量、最大流量以及总流量数;
完成所有流量图的添加后,开始汇总流量,继续创建graph item,如下图所示:

这里切记选择我们上面所创建的CDEF‘s Functiion “Trun all data into bits”
并在text format栏中写入ALL Traffic_in
然后依次添加图上的标识栏见以下步骤:
当前流量,图释1:

平均流量,图释2:

最大流量,图释3:

总流量统计,图释4:

截图的时候最后多了一个光标;
Text Format处填写:Total Bound: |sum:auto:total:2:auto|

8、完成后如下图所示,表示操作成功,请根据以上方法继续添加traffic out流量

三、进阶
看了以上介绍大家可以试着用这个方法在Graph Templates中创建一个汇总流量的模板,这样以后增加汇总图是就更加高效和迅速啦。
因为之前看到相关的介绍只有英文的,特别在次给大家做个中文和图片介绍,希望能给各位带来帮助。

有问题请在此留言~

Cacti常见问题集:FAQ 转载

[

以前自己曾经解决的,当时自己记住了,过了好长时间,重新在新的机器上安装cacti的时候,却忘记提前修改,导致一些不必要的麻烦。帖出来希望对自己或者对大家有帮助。

1、一般说来,图片的流量统计描述都是 |host_description| - Traffic - |query_ifName| 按照这个形式来描述的,对于华为的设备,Gi显示成GigabitEthernet,可能导致后面的模块号,端口好无法显示。如 GigabitEthernet4/3/2显示成GigabitEthernet,解决办法:

Console -> Settings -> Visual -> Maximum Field Length: 默认 15,我修改成30就OK了。

The maximum number of characters to display for a data query field.

2、对于Traffic 大于800Mbits/s的无法显示问题,在创建graph前修改 Data Templates -> Interface Traffic -> 1: traffic_in -> Maximum Value Use Per-Data Source Value 默认是100000000 后面再添 几个0就OK了,同样 2: traffic_out也要修改哦,最好在使用new graph创建新的graph之前修改后,否则之后修改会有一定的麻烦,甚至无法正常工作。

3、以前都是直接下载tar.gz源代码包安装的,按照readme就可以搞定一切。目前在FC4下可以直接通过yum instal cacti就安装完成,安装后却不知道怎么使用,也不知道安装到什么地方了,怎么让cacti工作。

首先了解rpm包安装了那些有用的文件:

rpm程序把cacit的php文件放到/usr/share/cacti目录下。

在/etc/httpd/conf.d/cacit.conf

# Cacti: An rrd based graphing tool
#
Alias /cacti    /usr/share/cacti
<Directory /usr/share/cacti/>
        Order Deny,Allow
        Deny from all
        Allow from 127.0.0.1
</Directory>

在apache的配置里面只允许localhost访问/cacti这个虚拟目录。

[root@elm ~]# cd /etc/cron.d
[root@elm cron.d]# more cacti
*/5 * * * *     cacti   /usr/bin/php /usr/share/cacti/poller.php > /dev/null 2>&1

定期执行程序的cron配置。

下面介绍如何让cacti工作:

首先,配置数据库:

[root@elm local]# cd /usr/share/doc/cacti-0.8.6h/

[root@elm cacti-0.8.6h]# ls

cacti.sql  docs  LICENSE  README

[root@elm cacti-0.8.6h]# mysql

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 312 to server version: 4.1.16
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the buffer.
mysql> create database cacti_test;
Query OK, 1 row affected (0.12 sec)
mysql> \q
Bye
[root@elm cacti-0.8.6h]# mysql cacti_test < cacti.sql

修改cacit的配置文件:

[root@elm cacti-0.8.6h]# cd /usr/share/cacti/include/
[root@elm include]# cat db.php
<?
/* make sure these values refect your actual database/host/user/password */
$database_type = “mysql”;
$database_default = “cacti_test”;
$database_hostname = “localhost”;
$database_username = “cactiuser”;
$database_password = “cactipass”;
$database_port = “3306″;
?>

根据自己的需求修改。

OK,打开Firefox在地址栏输入: http://localhost/cacti进行配置。

默认用户名密码:admin:admin

5、如果在配置完毕后可以生成rrd文件,且里面有数据,但是在浏览器上无法看到png图片。现查看apache的log

如果出现:

[Thu Feb 09 15:12:24 2006] [error] [client 127.0.0.1] File does not exist: /var/www/html/favicon.ico
ERROR: opening ‘/usr/share/cacti/rra/localhost_mem_buffers_3.rrd’: Permission denied
ERROR: opening ‘/usr/share/cacti/rra/localhost_mem_buffers_3.rrd’: Permission denied
ERROR: opening ‘/usr/share/cacti/rra/localhost_mem_buffers_3.rrd’: Permission denied
ERROR: opening ‘/usr/share/cacti/rra/localhost_mem_buffers_3.rrd’: Permission denied
[root@elm ~]# cd /usr/share/cacti/rra
[root@elm rra]# ls -lat

-rw-r–r–  1 cacti cacti 141484  2月  9 19:15 localhost_load_1min_5.rrd
-rw-r–r–  1 cacti cacti  47836  2月  9 19:15 localhost_mem_buffers_3.rrd
-rw-r–r–  1 cacti cacti  47836  2月  9 19:15 localhost_mem_swap_4.rrd
-rw-r–r–  1 cacti cacti  47836  2月  9 19:15 localhost_proc_7.rrd
-rw-r–r–  1 cacti cacti  47836  2月  9 19:15 localhost_users_6.rrd
-rw-r–r–  1 cacti cacti  94660  2月  9 19:15 tplink_input_13.rrd
-rw-r–r–  1 cacti cacti  94660  2月  9 19:15 tplink_input_16.rrd
drwxr-xr-x  2 cacti root    4096  2月  9 18:35 .
drwxr-xr-x  4 root  root    4096  2月  9 14:30 ..

Other也有R权限,那么请把机器的SElinux关闭,目前我不知道其他办法。

[root@elm rra]# cd /etc/selinux/

[root@elm selinux]# more config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#       enforcing – SELinux security policy is enforced.
#       permissive – SELinux prints warnings instead of enforcing.
#       disabled – SELinux is fully disabled.
SELINUX=disabled
# SELINUXTYPE= type of policy in use. Possible values are:
#       targeted – Only targeted network daemons are protected.
#       strict – Full SELinux protection.

SELINUXTYPE=targeted

注意SELINUX=disabled;重新启动机器后就OK了。

6、我只想显示整数怎么办,不显示小数点?

修改Graph Templates下的Graph Template Items的GPRINT Type,改成Exact Number

7、我原来使用的是rrdtool-1.0.x 升级到 1.2.x 后部分图像无法显示(Zoom)

修改Configuration -> Settings -> RRDTool Utility Version -> 1.2.x

IDC 质量监控-评估节点的网络品质

[

一、实际需求
公司租用多个idc机房,为了实时的和历史的查看idc网络状态,记录该节点的网络流量和做分析统计使用,都具有许多现实意义;
比如:该机房的总出口带宽,当前总在线人数,平均每个客户端的下载速度(各地速度不同这里指的是平均速率),带宽使用率等等,依此来评估该机房是否能达到当初的预测效果。
实际效果如下图所示:数据仅为举例使用;

各个IDC数据如下图:

其中:
- tcp est connections是所有机房连接数总计;
- download speed是每个连接的下载速度;
- Total outbound是所有服务器对外提供服务器的带宽总计;
- boundwidth used是总租用带宽除以当前流量的带宽使用率;
- this node boundwidth是该节点租用的带宽数;
目的:
可以实时的掌握idc机房总体信息;
可以历史的查询过去时间段内的局部信息;
可以对机房的网络质量做出及时判断;
可以针对每个机房的网络情况作出及时的调整;
以下我来谈一下具体实现(方法各有不同,达到效果即可,欢迎提供技术交流):

二、数据采集
1、tcp est connections汇总方法:
我提供的方法是在每台机器上部署snmp自定义脚本指定独立的oid传送给监控服务器:
详细参考我之前写的:Cacti进阶引用二:使用cacti获取snmp发送的自定义信息后作图
脚本原理:使用snmpwalk oid得到每个idc机房所有服务器的establish 连接数,进行汇总累加;
2、total outbound汇总计算:
方法一:使用rrdtool fetch(推荐使用)
指令如下:

#rrdtool fetch xxhost_traffic.rrd -s -10m AVERAGE |sed -n 3p |awk '{printf "traffic_out: %.f KB tarffic_in: %.f KB\n", $2/1024,$3/1024}'
traffic_out: 13569 KB tarffic_in: 354 KB

说明:我这里取得数值是10分钟前的流量,这是为了避免和cacti每5分钟取值产生冲突,也能保证取值准确;
fetch取值都是科学计数,这里用printf进行来还原为可读的数值。(要和谐一下!)
方法二:使用snmpwalk取流量值(不推荐使用,大家了解一下)
指令如下:

#snmpwalk -v2c -c public 127.0.0.1 .1.3.6.1.2.1.31.1.1.1.10
说明:oid指的是ifHCOutOctets = Counter64的数值(snmp v2c 64bit解决溢出问题),需要在5分钟之后再取一次,然后将后一次的数据减去5分钟前的数据,得出的就是这5分钟内的流量;

方法三:本地ifconfig取流量,方法与snmpwalk有相似之处:

#ifconfig eth0 |grep "TX bytes" |awk '{print $6}' |cut -c 7-
说明:其中RX为接受bytes数,TX为发送bytes数,如果取traffic out数据(即提供服务的数据),就上面的指令;同时也需要每5分钟取值一次然后相减,得出每5分钟的流量;可以在本地写脚本,用snmp传送到监控服务器;

3、带宽使用率和下载速度(即每个连接的平均速度)计算
带宽使用率=当前使用带宽 / 租用总带宽
下载速度=当前使用带宽 / 总连接数

4、汇总数据到文本:
文本的内容和格式如下:

xiantao,links: 3087,speed: 349.6262,bw: 1054,bound: 2048,bw_percent: 51%
datong,links: 2332,speed: 968.2333,bw: 2205,bound: 4096,bw_percent: 53%
nantong,links: 4279,speed: 598.0313,bw: 2499,bound: 4096,bw_percent: 61%
Total,links: 153610.0,speed: 607.8250,bw: 87278.0,bound: 112640.0,bw_percent: 76%
说明:以上数据为举例,total行中的数据应该为全部idc的总和(当前流量和总租用带宽)或者平均(下载速度、带宽使用率),%符号和单位都可以不用添加我们可以在cacti中设定;

5、cacti取值脚本
内容如下:

#!/bin/sh
workfile=result.txt #汇总数据的文本
node=$1
if [ -f $workfile ] && [ ! -z $node ];then
  echo -n `cat $workfile |grep -i $node |awk -F, ‘{print $2″ “$3″ “$4″ “$6″ “$5}’ |sed s/”: “/:/g |sed s/”%”//g`
else
  echo -n “links:0 speed:0 bw:0 bw_percent:0 bound: 0″
fi

输出格式:

links:6369 speed:460.3096 bw:2863 bw_percent:69.8 bound:4096

三、创建cacti作图模板
完成以上步骤,就可以在cacti中创建相应的模板啦,为我们辛苦取到的数据画图:
1、登录cacti点击左侧菜单的data input motheds -> add
如图:

说明:设定如图所示,input string这里要在我们上面写的取值脚本后面跟,因为脚本后面要跟一个行参;Allow Empty Input的checkbox勾选;
2、设定这个的input fields属性
如图:

说明:这里Special Type Code我们取主机名即 hostname,这样cacti就会知道是取devices name值;因为我们后面要创建host templates,然后再创建graph的时候把这个值赋给脚本;
3、设定output fields属性
就是我们脚本输出的5个数据;以bound举例,其他相同,如图:

说明:依次创建5个数据的output fields,第一列的name必须与脚本输出的名字相同,最后点击save保存;
4、创建data templates模板
如图:


说明:
Data Source Item依次创建刚才输出的5个output fields这里的下拉菜单就是我们data input methods设定选择和你创建的Internal Data Source Name一一对应不能出错;
Maximum Value这里设定尽量高些,免得出现溢出无法出图;
Custom Data无需设定,其他全部默认;这里有个问题就是你每完成一个就要先点击save,否则会丢失之前修改的内容;
5、创建graph templates模板,点击graph templates->add
如图:


说明:Vertical Label 这里是纵坐标名字可以填一个node status什么的随你喜欢,其他可以全部默认;
Graph Template Items -> add 以TCP EST Connections为例:
如图:

说明:
Data Source 下拉菜单选择之前我们在data templates里面创建的links一栏
color自行选择(一定要选)
Opacity/Alpha Channel cacti0.8.7新增默认就好;
Graph Item Type 选择AREA(就是图的类型,AREA指的是区块表示,STACK是在原来区块上堆叠区块)
Text Format 说明文字,自己写吧
Insert Hard Return 勾选的话就会输入一个回车符
CDEF Function不用选,因为我们输入的数据已经是正确数据,
GPRINT Type:只有在Graph Item Type 选择GPRINT才用到,我们后面的%就是通过这个实现的;
图中item 2、3、4添加方法如下图:

说明:
这里全部使用的Graph Item Type为GPRINT类型,GPRINT Type选择Exact Numbers(不打印小数点类型)
Consolidation Function 选择LAST 即当前数值;其他的max min average不用说了吧;对应你自己的选择在text format中打印标签名;
顺便说一下加%的GPRINT Type的方法:
点击Graph Management->GPRINT Presets->add 如图:可参看rrdgraph_graph官方说明

Graph Item Inputs部分会根据Graph Template Items自动创建默认即可;
点击save保存,完成设定;
6、创建host templates并画图:
点击add;然后如下图:

save保存,然后选择左侧菜单的devices->add开始作图,设定如下图:

说明:这里重要的一点就是Hostname一栏一定要对应我们脚本中的行参值,就是你数据文本里面的第一列;其他snmp等全部为空;

点击save->Create Graphs for this Host->勾选Graph Template Name中的
Create: node_boundstatus graph->create 作图成功,大功告成;
7、一次添加所有的idc host devices并加入到graph trees。

四、心得总结
我在做这个监控前,也没有想到过cacti这些附加功能,所以在做任何一个技术的时候,我们都应该多想想是否还有其他我们可以利用的价值。这里起到一个抛砖引玉的效果,希望网友们有更好的idea呈现给我们~

cacti数据备份与迁移

[

原来的监控服务器因为是在电信机房的所以很多网通的被监控主机有很多timeout,而且随着被监控服务器的不断增加存在问题也越来越显着。

一、工作流
安装mysql;php;apache;rrdtool后;
将cacti目录tarball后,复制到双线机房新监控服务器上解压;
cactid目录tarball后,复制到双线机房新监控服务器上解压;
mysql数据库dump或者tarball后,复制到双线机房新监控服务器上解压;

#mysqldump -p cacti >cacti.sql

重新赋予cactiuser对于数据库cacti所有权限;

grant all on cacti.* to cactiuser@localhost identified by ‘cactipassword’;

二、故障发生
打开cacti可以正常登录和控制,检查graph management,打开所有的图无显示;于是打开debug模式:
*Turn On Graph Debug Mode.

RRDTool Says:
    ERROR: This RRD was created on other architecture

三、解决方案
google、baidu了一下,发生这个问题的原因是因为所有rrd库需要全部重新dump和restore一次;
好了上脚本:
从老的cacti服务器上dump所有的rrd文件为xml file,共计9K多张:

#!/bin/sh

rrddump=”/usr/bin/rrdtool dump”
xmldir=/tmp/rraxml

for file in `find /var/www/html/cacti/rra/ -mtime -2 |awk -F\/ ‘{print $NF}’`
#遍历rra目录,查找近2天修改过的rrd文件;
  do
    ${rrddump} ${file} > ${xmldir}/${file}.xml
  done

tar走rraxml目录到新监控服务器上解压:restore脚本如下:

#!/bin/sh
rrdrestore=”/usr/bin/rrdtool restore”
xmldir=/tmp/rraxml/
for file in `find ${xmldir} |awk -F\/ ‘{print $NF}’ |sed s/.xml//g`
#遍历xml目录,并去掉xml后缀,直接还原到rra目录下
  do
    ${rrdrestore} ${xmldir}${file}.xml /cacti/rra/${file}
  done
chown cactiuser:cactiuser /cacti/rra -R

完成后,再次打开cacti监控显示正常;迁移成功;
用这个方法其实是用来备份rra的,这次正好顺便备份一下;

fetion robot on centos 4

[

新版本的需要glibc2.4 这样一来centos4、5都不行了,需要使用老的版本
 
wget http://www.it-adv.net/fetion/download/fetion20080522004-linrh4.tar.gz
tar zxvf fetion20080522004-linrh4.tar.gz
wget http://www.it-adv.net/fetion/libraryrh4x32.tar.gztar zxvf libraryrh4x32.tar.gz
把解压出来的所有lib文件放到/usr/lib/
之后

ln -s /usr/lib/libcrypto.so.0.9.7a /usr/lib/libcrypto.so.4ln -s /usr/lib/libssl.so.0.9.7a /usr/lib/libssl.so.4echo "/usr/lib" > /etc/ld.so.conf/sbin/ldconfig

ssh 域名解析登录延迟问题

[

最近在工作中常常用ssh登录某个节点的服务器解析域名的时间非常长:

  1. #time ssh
  2. real    0m19.928s
  3. user    0m0.008s
  4. sys     0m0.001s

可以看到登录这个点服务器需要近20秒的时间;
然后用nslookup检查了这个域名ip地址:
报了;; connection timed out; no servers could be reached的错误;
用ping是可以解析,不过解析时间也很长;
这个问题的原因,目前还不是很清楚,怀疑是否是新启用的ip地址可能存在这方面的情况;

ssh登录缓慢的问题可以通过修改sshd_config文件中的GSSAPI options

  1. # GSSAPI options
  2. #GSSAPIAuthentication no
  3. #GSSAPIAuthentication yes
  4. #GSSAPICleanupCredentials yes

全部注释掉,然后重启sshd服务;
再测试登录

  1. #time ssh
  2. real    0m2.229s
  3. user    0m0.006s
  4. sys     0m0.002s

恢复正常!

09年的国内校园市场,不再适合创业

[

校园网发展到今天,从无到有,从不通到畅通,

大学生们的价值观在变,网络使用习惯在变,整个互联网的大环境在变,

如今的互联网,已经不是5年前的那个群雄割据,一个点子可以养活一帮人的时代了

如果说是因为我离开学校太久没有新思路的话,我实在想不出来,在目前还未发展到ipv6的时代下,当代大学生还能在这个熟透了的互联网上,搞出什么东西来?

奉劝还想以“电子商务”、“校园消费”等名目进入校园市场的创业者,看看现在的大学生上网都干什么吧。

cacti 0.8.7c and 0.8.7b

[

又是熟悉的cacti

弄两天了,超过20个小时的研究,

这次主要着手在cacti的spine端和数据库端的分离和个性化一些template,目的在于实现某项目的图形化部分。

心得:0.8.7b适合centos 4 以及下面的php4 mysql4

0.8.7c适合centos5以及下面的php5 mysql5

c版本用在centos4 以及php4和mysql4下面会出现打开页面空白的情况,

另外,不必追求高版本的rrdtool ,现有的rrdtool-1.2.29-1.el5  以及rrdtool-1.2.29-1.el4 就足够

元宵夜,月圆夜,焰火夜

[

 

 

谁动了我的主频

[

早晨开会,没带电源,把本本的屏幕亮度调到了最低

晚上,用本本的时候感觉格外的慢(接了外接电源),倒腾了好久,还以为是病毒,已经都在倒数据准备一键恢复的时候,看到属性中,cpu频率怎么变成987Mhz了,才晓得,降频降下去之后不知道什么原因没自动升起来。

于是,拔掉充电器,屏幕亮度调高,插上充电器,cpu主频恢复了。

 

唉,很多本本都具备无外接电源时节电联动,通常的做法是,降低主频,降低屏幕亮度,降低风扇转速,一般情况都不需要去刻意注意主频是否正常,遇到机器速度莫名降低,做啥事情cpu占用都高的时候,除了检查机器软件的问题之外,别忘了检查主频,别让cpu自动降频拖慢你的本本