2023拉

Ngios + Cact

上一篇 / 下一篇  2015-02-11 16:18:30 / 个人分类:Linux杂谈

导语:
cacti: 使用 rrdtool 进行图形化的展示.通过 snmp 获取各个信息.数据存在 mysql 中.
优点: 直观,图形漂亮,**全面,软件功能强大,可以自定义一些模板或者下载模板来定义**内容
用来**诸如 CPU 使用率, 内存使用率等连续性的数据非常直观.
缺点: 报警功能
nagios: 使用 nrpe 进行远程**.报警.可以使用 PNP 进行图形化展示.
优点: 报警功能强大.可以自定义报警功能,在 nagios 中调用
用来检测服务是否存活以报警.很实用.如硬盘使用情况,http, mysql 是否存活
缺点: 图太丑

所以.常用cacti + nagios

这套组合要装的依赖软件有:
1.web 服务器 Nginx 或 Apache
2.PHP
3.MySQL
4.rrdtool
5.snmp
6.cacti
7.nagios
8.nagios-plugin
9.nrpe
10.ndo2db

一.安装nginx,php,mysql
我通过 lnmp 一键包安装.
自己编译也行:

二.安装 RRDtool和net-snmp
yum install rrdtool
yum install net-snmp net-snmp-devel net-snmp-utils
配置 snmp:

net-snmp-config --create-snmpv3-user -ro -A edengsunyu -a MD5 sunyu

启动 snmp 服务:
service snmpd start
让它随机器自:
chkconfig snmpd on

snmpwalk -v 3 -u sunyu -a MD5 -A edengsunyu -l authNoPriv 127.0.0.1 sysDescr

三.安装cacti
wget http://www.cacti.net/downloads/cacti-0.8.8b.tar.gz
tar -zxf cacti-0.8.8b.tar.gz
把解压后的目录放到 nginx 根目录:
mv cacti-0.8.8b /home/wwwroot/default/cacti
cd /home/wwwroot/default/cacti

四.创建数据库:
mysql -h127.0.0.1 -uroot -proot
mysql> create database cacti;

五.导入初始数据
mysql -h127.0.0.1 -uroot -proot cacti < /home/wwwroot/default/cacti/cacti.sql

六.更改 cacti 数据库信息
vim /home/wwwroot/default/cacti/include/config.php

修改如下内容为:
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "127.0.0.1";
$database_username = "root";
$database_password = "root";
$database_port = "3306";
$database_ssl = false;

date_default_timezone_set('Asia/shanghai');

七.初始化 cacti
这时,访问链接:
http://yourip/cacti/

会出现 cacti 安装向导
一直下一步,直到安装完成。这时候会出现登录界面。
默认管理员帐号是:
admin
admin
第一次登录的时候会强制更新密码.

八.配置本机 snmp:
在管理界面点击左侧导航的: Devices, 这时,右侧列表中会出现 localhost.
点击 localhost 后编辑本机相关信息.
SNMP Version: Version 3
SNMP Username (v3): sunyu # 前面 snmp 安装配置时的用户名
SNMP Password (v3): edengsunyu # 前面 snmp 安装配置时的密码
SNMP Auth Protocol (v3): MD5 # 前面 snmp 安装配置时用的加密方式.

九.测试数据
进去后由于没有数据,没有显示。这时候可以手动运行一次:
/usr/local/php/bin/php /home/wwwroot/default/cacti/poller.php

然后将该脚本设置成自动执行:
crontab -e
*/5 * * * * /usr/local/php/bin/php /home/wwwroot/default/cacti/poller.php > /dev/null 2>&1

十.远程**
直接在 Devices 里添加其它的机器.填写 snmp 相关信息.
当然,对方机器上得装 snmp
先在**机上测试被**机的信息获取:
snmpwalk -v 3 -u sunyu -a MD5 -A edengsunyu -l authNoPriv 42.51.135.148 sysDescr

要确保能获取到信息。如果获得不到,要检查一下 snmp 配置及防火墙

如:
Description DB 备份
Hostname 42.51.135.148
Host Template Generic SNMP-enabled Host
SNMP Version: Version 3
SNMP Username (v3): sunyu # 前面 snmp 安装配置时的用户名
SNMP Password (v3): edengsunyu # 前面 snmp 安装配置时的密码
SNMP Auth Protocol (v3): MD5 # 前面 snmp 安装配置时用的加密方式.

十一.安装 nagios 插件

插件下载地址:http://en.sourceforge.jp/projects/sfnet_gibtmirdas/downloads/npc-2.0.4.tar.gz/ 

tar zxf npc-2.0.4.tar.gz
mv npc /home/wwwroot/default/cacti/plugins/

修改配置文件添加如下信息
vim /home/wwwroot/default/cacti/include/config.php
$plugins = array();
$plugins[]='npc';

进入管理页面的插件管理: Plugin Management
会发现有一个 NPC. 点击那一栏左侧的安装按钮,然后会出现一个启用按钮.点击后,页面顶部会出现 NPC 的标签。和 console 及 graphs 在一起。

在管理页面的设置页面: Settings 里也会有一个 NPC 标签。在这里可以把本机的 nagios 设置进去。

nagios 安装及配置:

这里使用的是 3.5.1
新版本和 cacti, 以及后面要用到的 ndo2db 配合时会出现不兼容。
而且错误非常难找。所以这里先列出使用的各个版本:

nagios: 3.5.1 http://sourceforge.net/projects/nagios/files/nagios-3.x/nagios-3.5.1/nagios-3.5.1.tar.gz/download
ndo2db: 1.4b7 http://sourceforge.net/projects/nagios/files/ndoutils-1.x/ndoutils-1.4b7/ndoutils-1.4b7.tar.gz/download
cacti:  0.8.8b http://www.cacti.net/downloads/cacti-0.8.8b.tar.gz
npc:   2.0.4 http://en.sourceforge.jp/projects/sfnet_gibtmirdas/downloads/npc-2.0.4.tar.gz/

安装完后.
在 Settings 的 NPC 标签里进行设置:
Nagios Command File Path : /usr/local/nagios/var/rw/nagios.cmd
Nagios URL : http://42.51.155.206/nagios/

这时候在 cacti 的 NPC 标签里发现 nagios 状态是红色的 off.

解决:
npc 要nagios的数据通过ndo2db导入到mysql数据库(cacti的库中),然后cacti读取数据库信息将nagios 的结果展示出来

所以要安装 nodo2db
安装之前一定要先安装 mysql-devel 包

yum install mysql-devel
不然 nodo2db 启动会失败,而且后面 nagios ** mysql 也要这个插件

地址: http://sourceforge.net/projects/nagios/files/ndoutils-1.x/ndoutils-1.4b7/ndoutils-1.4b7.tar.gz/download

经测试.2.0 及 1.4b9 都无法将数据存入数据库

tar -zxf ndoutils-1.4b7.tar.gz
cd ndoutils-1.4b7
./configure --with-mysql-inc=/usr/include/mysql --with-mysql-lib=/usr/lib/mysql --enable-mysql --with-ndo2db-user=nagios --with-ndo2db-group=nagcmd
make
不用执行make install

复制对应执行文件
cp src/{ndomod-3x.o,ndo2db-3x,log2ndo,file2sock} /usr/local/nagios/bin/
cp config/ndo2db.cfg-sample /usr/local/nagios/etc/ndo2db.cfg
cp config/ndomod.cfg-sample /usr/local/nagios/etc/ndomod.cfg
chown nagios:nagcmd /usr/local/nagios/etc/*
chown nagios:nagcmd /usr/local/nagios/bin/*
chmod -R 777 /usr/local/nagios/

编辑 /usr/local/nagios/etc/ndo2db.cfg
填写上本机的相应信息

socket_type=tcp
db_host=127.0.0.1
db_port=3306
db_name=cacti
db_prefix=npc_
db_user=root
db_pass=root
debug_level=1

ndo2db_user=nagios
ndo2db_group=nagcmd

编辑 /usr/local/nagios/etc/ndomod.cfg
output_type=tcpsocket
output=127.0.0.1

启动 ndo2db
/usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg

启动时报错:
Starting ndo2db:Support for the specified database server is either not yet supported, or was not found on your system.
 done.

这是由于没有安装 mysql-devel 造成的。

安装 mysql-devel 后把 ndo2db 重新编译一下

如果启动时报错:
Starting ndo2db:Failed to obtain lock on file /usr/local/nagios/var/ndo2db.lock: Permission denied

解决方法是:确认你在 /usr/local/nagios/etc/ndo2db.cfg里ndo2db_user与ndo2db_group这两项的填写的用户是否对目录 /usr/local/nagios/var/ 有写入的权限。

配置nagios的配置文件
/usr/local/nagios/etc/nagios.cfg
添加以下两句,第二句如果没有才加上去,默认是有的。
broker_module=/usr/local/nagios/bin/ndomod-3x.o config_file=/usr/local/nagios/etc/ndomod.cfg
event_broker_options=-1 

cacti 的NPC一直显示是 off.
查看 /var/log/messages 有提示:
Warning: Retrying message send. This can occur because you have too few messages allowed or too few total bytes allowed in message queues. You are currently using 64 of 7650 messages and 65536 of 65536 bytes in the queue. See README for kernel tuning options.

接着就是:
Warning: queue send error, retrying...
Error: max retries exceeded sending message to queue. Kernel queue parameters may neeed to be tuned. See README.

上面的意思是消息队列过长或者是消息内容过长.超过设置的值.

查看当前系统允许队列中一条最大消息长度
cat /proc/sys/kernel/msgmnb
查看当前系统允许队列中消息长度总和
cat /proc/sys/kernel/msgmax
查看当前系统允许队列长度
cat /proc/sys/kernel/msgmni

变更相应的值:
echo 13107200 > /proc/sys/kernel/msgmnb
echo 13107200 > /proc/sys/kernel/msgmax
echo 65536 > /proc/sys/kernel/msgmni

然后更改文件: /etc/sysctl.conf
vi /etc/sysctl.conf
找到对应的项,改成上面 echo 的值.

查看当前队列:
for i in `ipcs -q | grep nagios |awk '{print $2}'`; do ipcrm -q $i; done 

把 ndo2db 自启动.
往 /etc/rc.d/rc.local 里加入:
/usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg

TAG:

 

评分:0

我来说两句

Open Toolbar