类别:原创 服务器
本文参考:
《使用cacti + snmp 实现对apache 、mysql 、 nginx 的监控的安装和配置 》http://jedy82.blog.51cto.com/425872/888803
其它内容:
关于插件安装:《cacti 0.8.8b 插件安装及邮件 短信告警》http://jedy82.blog.51cto.com/425872/1569820
第一:说明
目的: 安装cacti并配置。
其它说明:
操作系统为:centos 6.6 64位,
cactiserver的ip为:192.168.10.112
第二:本例操作环境
[root@i-tcz0hdhc~]# yum update -y
[root@i-tcz0hdhc ~]# uname -a
Linux i-tcz0hdhc 2.6.32-431.29.2.el6.x86_64#1 SMP Tue Sep 9 21:36:05 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
[root@i-tcz0hdhc ~]# more/etc/redhat-release
CentOS release 6.6 (Final)
[root@i-tcz0hdhc ~]#
第三:服务器安装和基本配置
1、 安装必须的软件包
为求方便,本文所有软件全部使用yum 方式安装。
检查软件安装
[root@i-tcz0hdhc ~]# yum install -y httpd mysql mysql-server cacti php net-snmp crontabs
Loaded plugins: fastestmirror
Setting up Install Process
Loading mirror speeds from cached hostfile
*base: mirrors.yun-idc.com
*epel: mirrors.yun-idc.com
*extras: mirrors.yun-idc.com
*rpmfusion-free-updates: mirror.bjtu.edu.cn
*rpmfusion-nonfree-updates: mirror.bjtu.edu.cn
*updates: mirrors.neusoft.edu.cn
Package httpd-2.2.15-39.el6.centos.x86_64already installed and latest version
Package mysql-5.1.73-3.el6_5.x86_64already installed and latest version
Package mysql-server-5.1.73-3.el6_5.x86_64already installed and latest version
Package cacti-0.8.8b-7.el6.noarch alreadyinstalled and latest version
Package php-5.3.3-38.el6.x86_64 alreadyinstalled and latest version
Package 1:net-snmp-5.5-50.el6_6.1.x86_64already installed and latest version
Package crontabs-1.10-33.el6.noarchalready installed and latest version
Nothing to do
[root@i-tcz0hdhc ~]#
[root@i-tcz0hdhc ~]# chkconfig httpd on
[root@i-tcz0hdhc ~]# chkconfig mysqld on
[root@i-tcz0hdhc ~]# chkconfig crond on
[root@i-tcz0hdhc ~]# chkconfig snmpd on
[root@i-tcz0hdhc ~]# chkconfig
[root@i-tcz0hdhc ~]#
2、基本配置
a. 修改httpd配置
[root@i-tcz0hdhc ~]# vi/etc/httpd/conf/httpd.conf
修改/etc/httpd/conf/httpd.conf将ServerName改成ServerName :80
#ServerName www.example.com:80
ServerName :80
[root@i-tcz0hdhc ~]# service httpd restart
[root@i-tcz0hdhc ~]#
b. 验证php支持
[root@i-tcz0hdhc ~]# vi/var/www/html/test.php
<?php
phpinfo()
?>
[root@i-tcz0hdhc ~]#
浏览器打开如下:http://192.168.10.112/test.php
3、cacti配置
a. 修改cacti配置
[root@i-tcz0hdhc ~]# vi/etc/httpd/conf.d/cacti.conf
更改cacti的访问权限,根据安装的httpd的版本决定修改
<Directory /usr/share/cacti/> \\ 这是yum方式安装后的cacti的主目录
<IfModule mod_authz_core.c>
# httpd 2.4
Require host localhost
</IfModule>
<IfModule !mod_authz_core.c>
# httpd 2.2
Order deny,allow
Deny from all
#Allow from localhost \\ 注释掉
Allow from all \\ 增加
</IfModule>
[root@i-tcz0hdhc ~]# service httpd restart
[root@i-tcz0hdhc ~]# cd /usr/share/cacti/
[root@i-tcz0hdhc cacti]# vi include/config.php
修改数据库配置
$database_type = "mysql"; \\ 数据库类型(默认)
$database_default ="cacti"; \\ 数据库名
$database_hostname ="localhost"; \\ 数据库地址(默认)
$database_username ="cacti"; \\ 数据库用户名
$database_password ="cactipass"; \\ 数据库密码
$database_port = "3306"; \\ 数据库端口 (默认)
$database_ssl = false;
[root@i-tcz0hdhc cacti]#
b. 创建cacti库
[root@i-tcz0hdhc ~]# service mysqld restart
[root@i-tcz0hdhc ~]# mysql -u root -p
password: 输入数据库管理员的密码
mysql> create database cacti;
mysql> use cacti;
mysql> grant all on cacti.* to cacti@localhost identified by"cactipass";
mysql> flush privileges;
mysql> \q
[root@i-tcz0hdhc ~]#
c. 导入cacti数据库
[root@i-tcz0hdhc ~]# mysql -u cacti -pcactipass cacti </usr/share/doc/cacti-0.8.8b/cacti.sql
[root@i-tcz0hdhc ~]# mysql -u cacti -pcactipass cacti
mysql> show tables; \\ 查看导入的表,应该会列出表
mysql> \q
[root@i-tcz0hdhc ~]#
d. 新建自动化任务
[root@i-tcz0hdhc cacti]# crontab -l
*/5 * * * * /usr/bin/php /usr/share/cacti/poller.php> /dev/null 2>&1
[root@i-tcz0hdhc cacti]#
此处网上说是在php 前面加上 cacti这个用户 让这个用户来执行,但本人试了好多次都没成功 所以只能用root用户来做了。
第四:使用cacti
本处参照了:
http://hi.baidu.com/xymclone/blog/item/19726fd3c7465b1c3bf3cf3c.html
http://linux.chinaunix.net/techdoc/net/2006/10/03/941444.shtml
1、初始化cacti
在本地浏览器里输入 http://192.168.10.112/cacti
按照提示 一直进行下一步,这里的 rrdtool 可以选1.4,最后点Finish 。
根据提示默认用户名/密码:admin/admin。第一次进入会要求更改密码。Console→ Configuration → Setting → Genneral → SNMP Defaults → SNMP Community
确认这里的community 的名称是之前我们设置的 public,当然这里的community 会作为之后新建的Devices的默认的community。
2、新建监控主机(snmp客户端安装请参考文后的附言部分)
第一步创建主机 management → devices → add →devices[new]
a. Descritpion 对服务器的描述信息,任意取一个容易记的名称
b. Hostname 监控主机的IP地址或主机名,如果使用主机名,别忘了设置/etc/hosts
c. Host Template 这里实际上是一个监控模板,在创建图形时会有一些默认的监控项,比如CPU、内存等。根据监控主机的类型来选择,如果是Linux系统,通常选择“Local Linux Machine”和“ucd/net SNMP Host”。监控网络设备这里一般选择了“ucd/netSNMP Host”。
d. SNMP Community 要和snmpd.conf中的团体名一致(和设备中设置的团体名一致比如前面设置的public)
e. SNMP Version 如果选择Version 1,就不用设置SNMPUsername和SNMP Password两项了,因为只有在Version3中才会使用。
f. SNMP Port 默认使用161端口
g. SNMP Timeout 获取目标主机信息的超时时间
进行完这一步,就完成了一个主机基本信息的描述。保存后在device里就生成了一条记录,点击记录再进入记录条目,此时如果SNMP infomation下面有一个红色提示snmp error说明可能是CACTI服务器连接不到目标主机,也可能是SNMP团体名设置错误,可做适当调整,直到没有错误。
如果没有错误 会出现一些设备信息,类似下面这样:
SNMP Information
System:Linuxi-tcz0hdhc 2.6.32-431.29.2.el6.x86_64 #1 SMP Tue Sep 9 21:36:05
UTC 2014 x86_64
Uptime: 947782 (0 days, 2 hours, 37 minutes)
Hostname: i-tcz0hdhc
Location: Unknown (edit /etc/snmp/snmpd.conf)
Contact: Root root@localhost (configure /etc/snmp/snmp.local.conf)
第二步 为主机创建图形
在上图的界面点击旁边的create Graphs for this host为刚刚创建的主机创建图形。
实际上这一步看到的界面是和前面选用的模板有关的,另外在下面还可增加监控模板。如果监控模板不对,则显示的图形不合实际或者无法显示。这里可以选择要监控那些信息。最后保存就为这个主机创建了一个流量信息图集。
第三步 创建图形树
做完了第二步,实际上在graphs里是看不到图形的,需要用图形树把图形链接出来,使用自己创建的图形树的目的是为了规划图形分类,让管理更清晰。
Management→ Graph Trees → Graph Trees → add
新建图形树
NAME 起一个一级目录的名字
sortingtype分类类型 实际上是目录排序,分别是无排序、安字母、自然排序、数字排序。一般选无排序。
创建完了一级目录后,进入一级目录,单击Add创建二级目录
此项注意: 先选择节点类型,因为选择节点类型后页面要刷新,其他的白选。页面类型如下
Header 是菜单项,意思就是点击后弹出子菜单。
Graphs 图形 点击后链接到具体的一个图形。
Host 主机点击后现实设备中定义的主机下所有的图形集。
这一级菜单只有header可以定义名称。graphs和host是集成前面定义的名称来的。所以有的时候为了看起来清晰明了 需要将你的主机再向下包含一层目录。
到此简单的流量监控图就创建完了,主菜单的graphs项列出了我们创建的图形树,点击可看到相应的数据图表。
第五:错误解决
1、[root@jedy ~]# snmpwalk -v1 -c test localhost 报下面的错误
End of MIB
[root@jedy ~]#
参考:这个错误一般是在 snmp.conf 里view 里面没有允许该OID ,甚至做了显式拒绝,解决办法是允许该 OID.
加入: view all included .1
本处参照了 http://ilexes.blog.51cto.com/705330/243937 但原文有一点错误
[root@jedy ~]#
2、[root@jedy ~]# snmpwalk -v1 -c public localhost
getaddrinfo: localhost1 Name or service not known
snmpwalk: Unknown host (localhost)
说明 主机名不对或是snmp服务不正常
3、[root@jedy ~]# snmpwalk -v 1 -c test localhost
Timeout: No Response from localhost
说明Community 不正确 或是snmp服务不正常
以下错误是从网上摘抄的,供参考。本人没有碰到过,所以没有测试。
图片不能显示
总结cacti图形采集正确,却无法实现部分监控图像的问题
有些时候,使用的cacti出现莫名其妙的问题,网卡图形无法显示,其他图形正常显示,
在确保snmp数据采集正常的情况下,总结如下
1.--console-----system utilities - → Rebuild poller cache
2.系统时间不准确,重新设置时间
3.图像没有生成,运行#/usr/bin/php /srv/www/htdocs/cacti/poller.php--force
4.权限问题,修改权限#chmod 777 -R /srv/www/htdocs/cacti/rra
5.数据库表有损坏,修复#mysqlcheck -ao cacti --auto-repair -uroot-p
6.重启snmpd服务#service snmpdrestart
7.cacti的日志太大,清理日志
8.查看日志,---console-----System Utilities---View Cacti logFile"
一般查看日志,会出现大量数据采集失败的警告
不同网段之间别忘记了路由问题
附:snmp客户端安装和基本配置
1、 Linux客户端的安装配置
a. 检查软件安装
[root@i-tcz0hdhc~]# yum install -y net-snmp
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
*base: mirrors.yun-idc.com
*epel: mirrors.yun-idc.com
*extras: mirrors.yun-idc.com
*rpmfusion-free-updates: mirror.hust.edu.cn
*rpmfusion-nonfree-updates: mirror.hust.edu.cn
*updates: mirror.oasis.onnetcorp.com
Setting up Install Process
Package 1:net-snmp-5.5-49.el6_5.4.x86_64already installed and latest version
Nothing to do
[root@i-tcz0hdhc~]#
[root@i-tcz0hdhc~]# chkconfig
[root@i-tcz0hdhc~]# chkconfig snmpd on
[root@i-tcz0hdhc~]# chkconfig
b. 配置本机snmpd(想要被cacti监控的linux主机都要修改)
只需修改以下几个地方,其它地方保持默认即可。下面是改好后的样子
[root@i-tcz0hdhc~]# more/etc/snmp/snmpd.conf | egrep -v"^$|^#"
com2sec notConfigUser default public \\将这里的snmp团体名改成一个好记的名字,当然也可以不改,此处我改成了 public
group notConfigGroup v1 notConfigUser
group notConfigGroup v2c notConfigUser
view all included .1 \\增加这一行,要用all 不能用systemview 要不然取不到数据。这是增加cpu取值的
view systemview included .1.3.6.1.2.1.1
view systemview included .1.3.6.1.2.1.2 \\增加这一行。这是增加网卡取值的
view systemview included .1.3.6.1.2.1.25.1.1
access notConfigGroup "" any noauth exact all none none \\增加这一行,要用all 不能用systemview 要不然取不到数据。这是增加cpu取值的
com2sec mynetwork 192.168.10.112/24 public \\增加这一行,要用all 不能用systemview 要不然取不到数据。这是增加cpu取值的
view all included .1 80 \\增加这一行,要用all 不能用systemview 要不然取不到数据。这是增加cpu取值的
view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc \\将这一行前面的#去掉
syslocation Unknown (edit/etc/snmp/snmpd.conf)
syscontact Root <root@localhost>(configure /etc/snmp/snmp.local.conf)
dontLogTCPWrappersConnects yes
[root@i-tcz0hdhc~]#
c. 开放防火墙允许snmp通信端口
[root@jedy ~]# iptables -A INPUT; -s IP地址 -p udp --dport 161 -jACCEPT
注意 一定要开udp的端口,以上一行可以写到 /etc/sysconfig/iptables 中 这样 每次开机后会自动启用的
d. 测试snmp
重启 snmp服务器
[root@jedy ~]#
[root@jedy ~]# services snmpd restrart
[root@jedy ~]#netstart -tlnp | grep 161 查看服务端口有没有起来
如果没有snmptranslate;snmpwalk命令,请安装net-snmp-utils 包
[root@jedy ~]# snmptranslate -To | head 如果取到部分oid 说明snmp工作正常 当然这个正常并不代表 cacti就能取到数据。还要进行下面的测试
.1.3
.1.3.6
.1.3.6.1
.1.3.6.1.1
.1.3.6.1.2
.1.3.6.1.2.1
.1.3.6.1.2.1.1
.1.3.6.1.2.1.1.1
.1.3.6.1.2.1.1.2
.1.3.6.1.2.1.1.3
[root@jedy ~]#
[root@jedy ~]# snmpwalk -v 1 -c test localhost 后将会输出很多信息 说明snmp工作没问题
[root@jedy ~]# snmpwalk -v 1 -c test localhost .1.3.6.1.4.1.2021.11 如果有输出,说明能取到cpu值
[root@jedy ~]# snmpwalk -v 1 -c test localhost .1.3.6.1.4.1.2021.10.1.3 如果有输出,说明能取到cpu值
如果上面的测试输出为:End of MIB 说明不能取到cpu的值。
需要注意的是,虽然在snmpd.conf 中配置了cpu的取值,但在cacti的图表中,cpu usage 图表常常是没有曲线图的,但下面是有数值的,这是正常的,只是因为数值太小 没法绘图
2、 Windows 客户端的安装配置
a. 检查软件安装
开始 → 运行 → services.msc → SNMP server 或开始 → 控制面板 → 管理工具 → 服务 → SNMP server
如果没有SNMP server请自行安装windows组件中的网络管理中的snmp服务,安装后要重新打开服务。
SNMP server启动类型设为 自动
b. 开放防火墙允许snmp通信端口
防火墙开放udp 161端口,允许cacti服务器访问。具体设置略
c. snmp设置
增加社区名,比如我的是 public,权限只读
增加主机权限,比如我的是 192.168.10.112
保存退出
所有设置完成。