存档

‘monitor’ 分类的存档

zabbix监控报错zabbix server is not running: the information displayed may not be current的解决办法

2014年8月22日 没有评论

 

zabbix 遇到上面的问题

可以从以下几个方面入手检查,当然先查日志,如果不想查日志,先检查下面几项是否正常

1. selinux是否关闭。

2. zabbix web目录下面  $ZBX_SERVER 是否为ip,如果是localhost,ping下localhost是否能解析。

3.查看php的fsockopen模块是否启用。

分类: zabbix 标签:

ZABBIX API使用 PHP版本

2014年8月22日 5 条评论

先去官网了解下zabbix api文档,很详细,要发送什么数据过去,收到哪些数据。我是php新手,很搓,高手看到代码后勿喷。

zabbix 官网api地址,https://www.zabbix.com/documentation/2.2/manual/api  我这里主要介绍下登录和获取主机列表,其他的思路一样

登录    https://www.zabbix.com/documentation/2.2/manual/api/reference/user/get

获取主机列表  https://www.zabbix.com/documentation/2.2/manual/api/reference/host/get 阅读全文…

分类: zabbix 标签: ,

cacti插件汇总下载

2011年4月9日 没有评论

Handy Repopulate Poller Cache Script

Download and Documentation http://forums.cacti.net/about10292.html

New Advanced Ping Template Version

Download and Documentation http://forums.cacti.net/about10049.html 阅读全文…

cacti上监控mysql状态

2011年4月9日 没有评论

转自:http://blog.appleandroid.com/post/46/

环境 cacti-0.87d-cn
mysql-5.1.39
插件 mysql-cacti-templates-1.1.2.tar.gz
一,脚本下载以及设置

wget http://mysql-cacti-templates.googlecode.com/files/mysql-cacti-templates-1.1.2.tar.gz

tar -xzvf mysql-cacti-templates-1.1.2.tar.gz
cd mysql-cacti-templates-1.1.2
cp ss_get_mysql_stats.php /usr/local/apache2/htdocs/cacti/scripts
可以看到里面有多个监控项目,报告监控apache和nginx.我这只测试mysql,mysql相关的就2个文件:
模板文件:cacti_host_template_x_db_server_ht_0.8.6i.xml
插件:ss_get_mysql_stats.php
修改ss_get_mysql_stats.php 文件 第30行
$mysql_user = ‘cacti’;
$mysql_pass = ‘123123’;
$cache_dir  = “/usr/local/apache2/htdocs/cacti/cache/”;
设置准备监控的数据库的账户相关信息
mkdir /usr/local/apache2/htdocs/cacti/cache/
chown -R cache:cacti /usr/local/apache2/htdocs/cacti/cache/
chmod 777 /usr/local/apache2/htdocs/cacti/cache/
默认在获取的数据/tmp/下,会有cacti不能读取的情况。所以放在cacti目录来。
二,创建监控Mysql需要的账户以及权限
配置MySQL服务器,让cacti所在机器能够访问MySQL服务器的状态信息,必须拥有”process”权限。如果要监控InnoDB状态,还必须有”SUPER”权限。
mysql> grant process,super on *.* to ‘cacti’@’%’ identified by ‘123123’;
mysql> grant all privileges on cacti.*  to cacti@”%” identified by “123123”;
三,模板导入
在cacti管理界面(Import Templates)导入cacti_host_template_x_db_server_ht_0.8.6i.xml。

四,添加设备
创 建Graph。在Console选项卡下的左侧菜单栏中选择Devices,为要监控的主机新建一个Devices或选择已有Devices。在 Associated Graph Templates中添加想要监控MySQL状态的Graph Templates(如X MySQL Connections GT模板)。并点击最上面的Create Graphs for this Host链接,在Graph Templates的选择框中选择X MySQL Connections GT,然后点击Create按钮,出现以下WEB页。
监控的对象有:
X InnoDB Buffer Pool Activity GT
X InnoDB Buffer Pool GT
X InnoDB I/O GT
X InnoDB I/O Pending GT
X InnoDB Insert Buffer GT

X InnoDB Log GT
X InnoDB Row Operations GT
X InnoDB Semaphores GT
X InnoDB Transactions GT
X MyISAM Indexes GT
X MySQL Binary/Relay Logs GT
X MySQL Command Counters GT
X MySQL Connections GT
X MySQL Files and Tables GT

X MySQL Handlers GT
X MySQL Network Traffic GT
X MySQL Processlist GT
X MySQL Query Cache GT
X MySQL Query Cache Memory GT
X MySQL Replication GT
X MySQL Select Types GT
X MySQL Sorts GT
X MySQL Table Locks GT

X MySQL Temporary Objects GT
X MySQL Threads GT
X MySQL Transaction Handler GT

见图:
点击在新窗口中浏览此图片
点击在新窗口中浏览此图片
点击在新窗口中浏览此图片
点击在新窗口中浏览此图片
点击在新窗口中浏览此图片
点击在新窗口中浏览此图片
点击在新窗口中浏览此图片
点击在新窗口中浏览此图片
点击在新窗口中浏览此图片

cacti 监控磁盘使用率并报警方法

2011年4月2日 没有评论

cacti本身的模板只可以监控硬盘的使用大小,而不能监控使用百分率,所以我们要自定义cdef来监控硬盘使用率,并借助thold插件实现报警功能.网上找的资料都是在cacti.0.8.6版上实现的,而我用的是cacti.0.8.7版.注意:要使用thold插件,需要打补丁:http://cactiusers.org/downloads/cacti-plugin-arch.tar.gz

安装插件:settings,thold

因此,根据实际情况做如下改动:

在cacti目录下,vi include/global_arrays.php
搜索custom_data_source_types,修改这一段如下:

注意,我们是加一行,并修改了Graph: Upper Limit这一行.将

改成了

加的一行是:

看清楚了吗?

在cacti界面的Graph Management-cdefs新建cdef模块,名字自己起,添加字段如下:

也就是说

这样就可以在Threshold Templates里面添加监控硬盘的模块了,我添加的是Host MIB – Hard Drive Space ,最后在Threshold CDEF里面选择刚自定义的cdef,这样就可以正常监控硬盘使用率了.

我们进入 Devices – 选择需要磁盘监控的主机,点进去,在出来的页面的顶部 打开 Create Graphs for this Host ,再在新出来的页面顶部打开Auto-create thresholds即可应用模块了.

需要做的是,监控的主机要设置监控磁盘,如Data Query [SNMP – Get Mounted Partitions] 要选上,不然thold取不到数据的.

cacti监控nginx图解

2011年4月1日 1 条评论

Cacti或者是Cactiez监控主机:192.168.12.5

Nginx服务器:192.168.16.5

1、 首先nginx编译时允许http_stub_status_module,不然是监控不到nginx的运行状态的

2、编辑配置文件

# vi /usr/local/nginx/conf/nginx.conf
location /stub_status/ {
stub_status on;
access_log off;
allow 192.168.0.0/16;#意思是只允许内网能看到监控信息
deny all;
}

3、重新加载nginx的配置文件

# kill -HUP cat /usr/local/nginx/logs/nginx.pid

4、在Cacti主机上下载nginx监控模板

# wget http://forums.cacti.net/download.php?id=12676
# tar xvfz cacti-nginx.tar.gz
# cp cacti-nginx/get_nginx_socket_status.pl /data/cacti/scripts/
# cp cacti-nginx/get_nginx_clients_status.pl /data/cacti/scripts/
# chmod 755 /data/cacti/scripts/get_nginx*

5、检测插件
# /data/cacti/scripts/get_nginx_clients_status.pl http://192.168.9.25/NginxStatus/

输出信息:nginx_active:245 nginx_reading:11 nginx_writing:4 nginx_waiting:230

/data/cacti/scripts/get_nginx_socket_status.pl http://192.168.9.25/NginxStatus/

输出信息:nginx_accepts:41377 nginx_handled:41377 nginx_requests:223307

6、在cacti管理面板导入
cacti_graph_template_nginx_clients_stat.xml
cacti_graph_template_nginx_sockets_stat.xml

7、添加主机,在创建图形的时候会提示你输入URL of nginx stub status,后面你所监控的页面额url,比如上面我们的http://192.168.9.25/NginxStatus/,然后稍等下数据就会出来了。

8、如果你在测试第5步的过程中出现了以下信息:no (LWP::UserAgent not found),出现这个问题是perl里缺少组件,你可以按照下面的步骤解决:

# perl -MCPAN -e shell
# cpan> install LWP::UserAgent

如果perl组件安装成功,那么在此检测你就会得到正常的数据了。

 

注意:在创建主机过程中,

cacti监控nginxcacti监控nginxcacti监控nginx

免费的网站(主机或服务器)监控服务

2011年4月1日 没有评论

网站监控

监控服务

 

作为个人网站的站长,不仅需要每天更新网站内容和备份网站数据,还必须时刻监测自己网站(主机或服务器)的运行状态,一旦服务器宕机或出现其他状况 导致网站无法正常访问和运行,我们可以在第一时间知情并联系主机或服务器提供商解决问题,恢复网站访问。当然,让我们自己24小时不间断的对自己的网站进 行检测是不现实的,所以在这里我总结了一些提供免费网站监测服务的网站和第三方工具,让他们来24小时不间断监控我们的网站。

1、Site24×7免费网站监测服务(中文版)
网址:http://site24×7.com/zhcn/
Site24×7可以容易、快速、有效地监视网站和在线服务以及服务器的上线时间和性能。免费帐户可以每60分钟或者更长时间检测最多2个网站的情况。可以获得邮件或者短信的告警以及报告,免费帐户从不过期。

2、HyperSpin网站监测(中文版)
网址:http://www.hyperspin.com/zhcn/
HyperSpin在全球多个基点对您的网站、Web 主机和服务器进行监测,通过手机短信或电子邮件发送警报。

3、SiteUpTime网站监测服务(英文版)
网址:http://www.siteuptime.com/
免费用户可以监控1个网站,每30分钟监测一次,可监测4个端口,提供4台监测服务器供用户选择,网站不能访问的时候会发送Email通知你。 SiteUptime还为免费用户提供统计报告、每月报告邮件等实用服务。

4、HostTracker网站监测服务(英文版)
网址:http://host-tracker.com/
免费用户可以以每30分钟一次的频率同时监控2个网站。

5、Pingdom网站监测服务(英文版)
网址:http://www.pingdom.com/
免费版用户只能监视1个网站或服务器,免费服务还包括每月20条短信提醒和免费邮件通知。

6、Service Uptime(英文版)
网址:http://www.serviceuptime.com/
来自美国的网站监控服务商,同时也提供免费网站监控服务,每隔30分钟检查1次你的网站,最多监控1个网站,故障超时10秒会发送 Email通知你,可监控HTTP、SSL、SMTP、POP3、FTP、DNS、MySQL、TCP、Ping、IMAP等,可公开你的网站监控统计报 告。

7、Mon.itor.us网站监测(英文版)
网址:http://mon.itor.us/
监测你的网站,如果发现问题会发信通知你;还可以在你的网页中加入统计代码,统计你的网站访问量情况;另外有软件客户端可统计CPU、内存、硬盘、局域网等运行状况。

8、Internet Vista网站监测(英文版)
网址:http://www.internetvista.com/
Internet Vista对你的网站进行7×24小时的监控,一旦你的网站无法访问,就会给你发送电子邮件。

9、监控宝(国产)
网址:http://www.jiankongbao.com/
免费版可以每隔30分钟监测一次你的网站状态,监控网站数为2个,出现故障会通过Email、MSN和手机短信(免费用户限5条)通知你,每天发送监控日报。

10、网站保姆(国产)
网址:http://bm.chinaz.com/
中国站长站推出的监控服务器在线状态的服务,免费用户可在30分钟监测1个网站或服务器,有邮件通知,收费用户有短信通知。注册需要验证手机号码。

11、在线巴巴网站监测(国产)
网址:http://www.online88.com/
不需要在主机上安装任何软件,不受运行环境的限制,不只是拥有自己服务器的站长才可使用,使用虚拟空间的站长也可以使用。免费提供每年50次的报警服务。注册需要验证手机号码。

12、花生壳洋葱头-非接触式网络协议监控平台(国产)
网址:http://www.oray.com/yctou/
洋葱头提供包括 HTTP、Ping、FTP、SMTP、SNMP在内的各种专业互联网协议监控服务。免费用户可以通过电信、新联通(网通)网络运营商线路,每20分钟监测1次网站,不同地域同步实时监控。免费版最大任务数为5个。注册需要验证手机号码。

分类: monitor 标签:

cacti监控Disk(磁盘)I/O

2011年4月1日 1 条评论
转载:http://blog.csdn.net/wonitazansa1/archive/2011/01/25/6163424.aspx

平台环境

CentOS5.4

cacti-0.8.7e(cacti-0.8.7g已经测试安装正常)

snmpdiskio-0.9.6

安装步骤

安装cacti平台就不提了,网上多得是,今天主要是如何添加disk io监控的模板.

监控机上操作:

1.将下载的snmpdiskio-0.9.4.tar.gz上传到cacit服务器上,解压缩,将partition.xml拷贝resource/snmp_queries下.

tar zxvf snmpdiskio-0.9.4.tar.gz

cp snmpdiskio-0.9.4 /usr/local/apache2/htdocs/cacti/resource/snmp_queries/

2.在cacti服务器的web界面下导入cacti_data_query_snmp_disk_statistics.xml和cacti_graph_template_disk_io_bytessec.xml

被监控机操作:

3.将下载的snmpdiskio-0.9.4.tar.gz上传到被监控机上,解压缩,将目录下可执行文件snmpdisk拷贝/usr/local/bin/下.i

tar zxvf snmpdiskio-0.9.4.tar.gz

install -m 0755 -o root -g root -p -v snmpdiskio /usr/local/bin/,

4.由于9.4太老不支持2.6内核,需要修改,出自http://forums.cacti.net/viewtopic.php?p=124793#124793 中dverlaeckt 的“code”

添加到配置文件后面或者前面都可以,默认的配置文件,你可以不动。

Vim snmpdiskio 

#!/bin/bash

# $Id: snmpdiskio,v 1.5 2008/01/31 21:19:50 dverlaeckt Exp $

# snmpdiskio v0.9.6 (c) 2008 Dieter Verlaeckt <dieter.verlaeckt@gmail.com>

# snmpdiskio v0.9.5 (c) 2007 Pablo Destefanis <pdestefanis@gmail.com>

# snmpdiskio v0.9.4 (c) 2006 Mikael Fridh <mikael@meanstreak.se>

# Fields in /proc/partitions (kernel 2.4)

# major minor #blocks name rio rmerge rsect ruse wio wmerge wsect wuse running use aveq

# Fields in /proc/diskstats (kernel 2.6) for disks (i.e. hda)

# major minor name rio rmerge rsect ruse wio wmerge wsect wuse running use aveq

 

# Fields in /proc/diskstats (kernel 2.6) for partitions (i.e. hda1)

# major minor name rio rsect wio wsect

# InBlocks = sectors written to disk

# OutBlocks = sectors read from disk

# Set default procfile for kernel 2.4

PROCFILE=”/proc/partitions”

MODE=”linux24″

# Probably kernel 2.6:

if [ -f /proc/diskstats ]; then

PROCFILE=/proc/diskstats

MODE=”linux26″

fi

function hdNum()

{

awk ‘ BEGIN { num=0 } $1 ~ /[0-9]+/ && $2 ~ /[0-9]+/ { num++ } END { print num } ‘ $PROCFILE

}

function hdIndex()

{

awk ‘ BEGIN { num=0 } $1 ~ /[0-9]+/ && $2 ~ /[0-9]+/ { num++; print num } ‘ $PROCFILE

}

function hdDescr()

{

if [ “$MODE” = “linux26” ]; then

awk ‘ $1 ~ /[0-9]+/ && $2 ~ /[0-9]+/ { printf “%s\n”, $3 }’ $PROCFILE

else

awk ‘ $1 ~ /[0-9]+/ && $2 ~ /[0-9]+/ { printf “%s\n”, $4 }’ $PROCFILE

fi

}

function hdInBlocks()

{

if [ “$MODE” = “linux26” ]; then

awk ‘ $1 ~ /[0-9]+/ && $2 ~ /[0-9]+/ && NF == 7 { printf “%.0f\n”, $7 * 512 }

$1 ~ /[0-9]+/ && $2 ~ /[0-9]+/ && NF == 14 { printf “%.0f\n”, $10 * 512 } ‘ $PROCFILE

else

awk ‘ $1 ~ /[0-9]+/ && $2 ~ /[0-9]+/ && NF == 15 { printf “%.0f\n”, $11 * 512 } ‘ $PROCFILE

fi

}

function hdOutBlocks()

{

if [ “$MODE” = “linux26” ]; then

awk ‘ $1 ~ /[0-9]+/ && $2 ~ /[0-9]+/ && NF == 7 { printf “%.0f\n”, $5 * 512 }

$1 ~ /[0-9]+/ && $2 ~ /[0-9]+/ && NF == 14 { printf “%.0f\n”, $6 * 512 } ‘ $PROCFILE

else

awk ‘ $1 ~ /[0-9]+/ && $2 ~ /[0-9]+/ && NF == 15 { printf “%.0f\n”, $7 * 512 } ‘ $PROCFILE

fi

}

function usage()

{

cat <<-EOUSAGE

Usage: $0 <hdNum|hdIndex|hdDescr|hdInBlocks|hdOutBlocks>

EOUSAGE

}

if [ 1 -ne $# ]; then

usage

exit 1

fi

case $1 in

hdNum|hdIndex|hdDescr|hdInBlocks|hdOutBlocks)

$1

;;

‘hdNum’)

hdNum

;;

‘hdIndex’)

hdIndex

;;

‘hdDescr’)

hdDescr

;;

‘hdInBlocks’)

hdInBlocks

;;

‘hdOutBlocks’)

hdOutBlocks

;;

*)

usage

exit 1

;;

esac

 

exit 0

5.修改被监控机的snmpd.conf,在文件的结尾添加如下:

exec .1.3.6.1.4.1.2021.54 hdNum /bin/sh /usr/local/bin/snmpdiskio hdNum

exec .1.3.6.1.4.1.2021.55 hdIndex /bin/sh /usr/local/bin/snmpdiskio hdIndex

exec .1.3.6.1.4.1.2021.56 hdDescr /bin/sh /usr/local/bin/snmpdiskio hdDescr

exec .1.3.6.1.4.1.2021.57 hdInBlocks /bin/sh /usr/local/bin/snmpdiskio hdInBlocks

exec .1.3.6.1.4.1.2021.58 hdOutBlocks /bin/sh /usr/local/bin/snmpdiskio hdOutBlocks

这里增加了/bin/sh,我在网上搜索了许多,都没有加上这个,我测试就是不成功.

Service snmpd restart

6.测试

snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.58

[root@localhost ~]# snmpwalk -v 2c -c public localhost  .1.3.6.1.4.1.2021.58 

UCD-SNMP-MIB::ucdavis.58.1.1 = INTEGER: 1

UCD-SNMP-MIB::ucdavis.58.2.1 = STRING: “hdOutBlocks”

UCD-SNMP-MIB::ucdavis.58.3.1 = STRING: “/bin/sh /usr/local/bin/snmpdiskio hdOutBlocks”

UCD-SNMP-MIB::ucdavis.58.100.1 = INTEGER: 0

UCD-SNMP-MIB::ucdavis.58.101.1 = STRING: “0”

UCD-SNMP-MIB::ucdavis.58.101.2 = STRING: “0”

UCD-SNMP-MIB::ucdavis.58.101.3 = STRING: “0”

UCD-SNMP-MIB::ucdavis.58.101.4 = STRING: “0”

UCD-SNMP-MIB::ucdavis.58.101.5 = STRING: “0”

UCD-SNMP-MIB::ucdavis.58.101.6 = STRING: “0”

UCD-SNMP-MIB::ucdavis.58.101.7 = STRING: “0”

UCD-SNMP-MIB::ucdavis.58.101.8 = STRING: “0”

UCD-SNMP-MIB::ucdavis.58.101.9 = STRING: “0”

UCD-SNMP-MIB::ucdavis.58.101.10 = STRING: “0”

UCD-SNMP-MIB::ucdavis.58.101.11 = STRING: “0”

UCD-SNMP-MIB::ucdavis.58.101.12 = STRING: “0”

UCD-SNMP-MIB::ucdavis.58.101.13 = STRING: “0”

UCD-SNMP-MIB::ucdavis.58.101.14 = STRING: “0”

UCD-SNMP-MIB::ucdavis.58.101.15 = STRING: “0”

UCD-SNMP-MIB::ucdavis.58.101.16 = STRING: “0”

UCD-SNMP-MIB::ucdavis.58.101.17 = STRING: “390659584”

UCD-SNMP-MIB::ucdavis.58.101.18 = STRING: “823808”

UCD-SNMP-MIB::ucdavis.58.101.19 = STRING: “386556928”

UCD-SNMP-MIB::ucdavis.58.101.20 = STRING: “827904”

UCD-SNMP-MIB::ucdavis.58.101.21 = STRING: “5120”

UCD-SNMP-MIB::ucdavis.58.101.22 = STRING: “2224640”

UCD-SNMP-MIB::ucdavis.58.101.23 = STRING: “0”

UCD-SNMP-MIB::ucdavis.58.101.24 = STRING: “0”

UCD-SNMP-MIB::ucdavis.58.101.25 = STRING: “0”

UCD-SNMP-MIB::ucdavis.58.102.1 = INTEGER: 0

UCD-SNMP-MIB::ucdavis.58.103.1 = “”

出现如上数据,表示正常.

 

7.在cacti的devicesà Associated Data Queries添加SNMP – Disk Statistics

cati-io

Create Graphs for this Host选择

cati-io

你会发现要选择的硬盘太多,你可以用iostat命令,照这里添加

avg-cpu:  %user   %nice %system %iowait  %steal   %idle 

1.11    0.28    1.61    0.55    0.00   96.45

 

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn

sda               2.70        23.93        38.02     763647    1213086

sda1              0.00         0.05         0.00       1609         14

sda2              2.69        23.68        38.01     755634    1212824

sda3              0.00         0.05         0.00       1617          0

sda4              0.00         0.00         0.00         10          0

sda5              0.01         0.14         0.01       4345        248

我使用虚拟机测试的

cati-io

排错

如果出现

snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.58
UCD-SNMP-MIB::ucdavis.58 = No Such Object available on this agent at this OID

你先执行snmpwalk -v 2c -c public localhost,看看是否正常,如不正常,说明snmpd.conf其他配置有问题,如正常,说明刚才添加exec有问题,请检查.

Snmp.conf提前设置

40 #       sec.name  source          community

41 com2sec notConfigUser  default       mynetsnmp

61 #       group          context sec.model sec.level prefix read   write  notif

62 access  notConfigGroup “”      any       noauth    exact  all    none none

77 ##     group.name sec.model  sec.name

78 group MyRWGroup  v1        local

79 group MyRWGroup  v2c        local

80 group MyRWGroup  usm        local

86 ##           incl/excl subtree                          mask

87 view all    included  .1                               80

Nagios监控磁盘I/O

2011年4月1日 2 条评论

转载:http://www.chengyongxu.com/blog/nagios%E7%9B%91%E6%8E%A7%E7%A3%81%E7%9B%98io/

#官方默认插件中并无此插件,但官方还是提供了这个插件的下载,地址在:

http://exchange.nagios.org/directory/Plugins/Uncategorized/Operating-Systems/Linux/check_iostat-%252D-I-2FO-statistics/details

#注意:保证所有被监控机上都安装了sysstat包,并可以执行iostat命令

#下载之后,放在每台被监控机的/usr/local/nagios/libexec/目录下
#然后更改属组,赋予可执行权限

#被监控机上更改nrpe的配置文件

#重启服务
service nrpe restart

#打开主监控机上的servicegroups.cfg,我选择的是监控所有机器的I/O,所以在all_hosts组下增加下面一段

#如果只监控个别机器,请在services.cfg中相应的机器下增加

#检查配置文件并重新加载服务
1 service nagios checkconfig
2 service nagios reload

分类: monitor 标签: , ,

nagios配置详解

2011年3月22日 没有评论

主配置文件 nagios.cfg 需要更改的地方:
#cfg_file=/usr/local/nagios/etc/objects/localhost.cfg
interval_length=1 ; 间隔时间基准由 60s 改为 1s
command_check_interval=10s ; 命令检查时间间隔,-1 表示尽可能频繁的进行检查
date_format=iso8601 ; 日期格式

objects/contacts.cfg 用来定义联系人:

define contact {
contact_name sa
alias System Administrator
service_notification_period 24×7
host_notification_period 24×7
service_notification_options w,u,c,r
host_notification_options d,u,r
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
email admin@test.com
}

再定义联系人组

define contactgroup {
contactgroup_name admins
alias Administrator Group
members sa    ; 添加其它联系人用 “,” 分隔
}

 

主机监控的配置

define host {
host_name host_name    ; 简短的主机名称。
alias alias    ; 别名,可以更详细的说明主机。
address address    ; IP 地址,也可以写主机名。如果不定义这个值, nagio 将会用 host_name 去寻找主机。
parents host_names    ; 上一节点的名称,也就是指从 nagios 服务器到被监控主机之间经过的节点,可以是路由器、交换机、主机等等。
hostgroups hostgroup_names    ; 简短的主机组名称。
check_command command_name    ; 检查命令的简短名称,如果此项留空, nagios 将不会去判断主机是否 alive 。
max_check_attempts 整数    ; 当检查命令的返回值不是 “OK” 时,重试的次数。
check_interval 数字    ; 循环检查的间隔时间。
active_checks_enabled [0/1]    ; 是否启用 “active_checks”
passive_checks_enabled [0/1]    ; 是否启用 “passive_checks” ,及“被动检查”
check_period timeperiod_name    ; 检测时间段简短名称,这只是个名称,具体的时间段要写在其他的配置文件中。
obsess_over_host [0/1]    ; 是否启用主机操作系统探测。
check_freshness [0/1]    ; 是否启用 freshness 检查。freshness 检查是对于启用被动检查模式的主机而言的,其作用是定期检查主机报告的状态信息,如果该状态信息已经过期,freshness 将会强制做主机检查。
freshness_threshold 数字     ; fressness 的临界值,单位为秒。 如果定义为 “0” ,则为自动定义。
event_handler command_name    ; 当主机发生状态改变时,采用的处理命令的简短的名字(可以在 commands.cfg 中对其定义)
event_handler_enabled [0/1]    ; 是否启用 event_handler
low_flap_threshold 数字    ; 抖动的下限值。抖动,即在一段时间内,主机(或服务)的状态值频繁的发生变化。
high_flap_threshold 数字   ; 抖动的上限值。
flap_detection_enabled [0/1]    ; 是否启用抖动检查。
process_perf_data [0/1]    ; 是否启用 processing of performance data
retain_status_information [0/1]    ; 程序重启时,是否保持主机状态相关的信息。
retain_nonstatus_information [0/1]    ; 程序重启时,是否保持主机状态无关的信息。
contact_groups contact_groups    ; 联系人组,在此组中的联系人都会收到主机的提醒信息。
notification_interval 整数    ; 重复发送提醒信息的最短间隔时间。默认间隔时间是 “60” 分钟。如果这个值设置为 “0” ,将不会发送重复提醒。
notification_period timeperiod_name   ; 发送提醒的时间段。非常重要的主机(服务)定义为 24×7 ,一般的主机(服务)就定义为上班时间。如果不在定义的时间段内,无论发生什么问题,都不会发送提醒。
notification_options [d,u,r,f]    ; 发送提醒包括的情况: d = 状态为 DOWN , u = 状态为 UNREACHABLE , r = 状态恢复为 OK , f = flapping
notifications_enabled [0/1]    ; 是否开启提醒功能。”1″ 为开启,”0″ 为禁用。一般,这个选项会在主配置文件 (nagios.cfg) 中定义,效果相同。
stalking_options [o,d,u]    ; 持续状态检测参数,o = 持续的 UP 状态 , d = 持续的 DOWN 状态 , u = 持续的 UNREACHABLE 状态
}

服务监控的配置

define service {
host_name host_name
service_description service_description
servicegroups servicegroup_names
is_volatile [0/1]
check_command command_name
max_check_attempts
normal_check_interval
retry_check_interval
active_checks_enabled [0/1]
passive_checks_enabled [0/1]
check_period timeperiod_name
parallelize_check [0/1]
obsess_over_service [0/1]
check_freshness [0/1]
freshness_threshold
event_handler command_name
event_handler_enabled [0/1]
low_flap_threshold
high_flap_threshold
flap_detection_enabled [0/1]
process_perf_data [0/1]
retain_status_information [0/1]
retain_nonstatus_information [0/1]
notification_interval
notification_period timeperiod_name n
otification_options [w,u,c,r,f]
notifications_enabled [0/1]
contact_groups contact_groups
stalking_options [o,w,u,c]
}

服务监控的配置和主机监控的配置较为相似,就不一一说明了。

间隔时间的计算方法为:
normal_check_interval x interval_length 秒
retry_check_interval x interval_length 秒
notification_interval x interval_length 秒

主机监控配置的例子

define host {
host_name web1
alias web1
address 192.168.0.101
contact_groups admins
check_command check-host-alive
max_check_attempts 5
notification_interval 0
notification_period 24×7
notification_options d,u,r
}

对主机 web1 进行 24×7 的监控,默认会每 10 秒检查一次状态,累计五次失败就发送提醒,并且不再重复发送提醒。

服务监控配置的例子

define service {
host_name web1
service_description check_http
check_period 24×7
max_check_attempts 3
normal_check_interval 30
contact_groups admins
retry_check_interval 15
notification_interval 3600
notification_period 24×7
notification_options w,u,c,r
check_command check_http
}

配置解释: 24×7 监控 web1 主机上的 HTTP 服务,检查间隔为 30 秒, 检查失败后每 15 秒再进行一次检查,累计三次失败就认定是故障并发送提醒。
联系人组是 admins 。提醒后恢复到 30 秒一次的 normal_check_interval 检查。如果服务仍然没有被恢复,每个小时发送一次提醒。

如果要检测其他服务,例如,要检查 ssh 服务是否开启,更改如下两行:
service_description check_ssh
check_command check_ssh

为方便管理,对配置文件的分布做了如下修改:
nagios.cfg 中增加了:
cfg_dir=/usr/local/nagios/etc/hosts
cfg_dir=/usr/local/nagios/etc/services

在 hosts 目录中,为不同类型的主机创建了配置文件,如: app.cfg cache.cfg mysql.cfg web.cfg
并创建了 hostgroup.cfg 文件对主机进行分组,如:

define hostgroup {
hostgroup_name app-hosts
alias APP Hosts
members app1,app2
}

在 services 目录中创建了各种服务的配置文件,如: disk.cfg http.cfg load.cfg mysql.cfg
并创建了 servicegroup.cfg 文件对服务进行分组,如:

define servicegroup {
servicegroup_name disk
alias DISK
members cache1,check_disk,cache2,check_disk
}
分类: monitor 标签: ,

nagios中文版安装详解

2011年3月21日 没有评论

我友博客-nagios监控系统

1.关闭selinux

2.安装httpd php mysql 等基础环境软件

3.加载json模块

4.建立nagios账号
/usr/sbin/useradd nagios
创建一个用户组名为nagcmd用于从Web接口执行外部命令。将nagios用户和apache用户都加到这个组中。

5.编译与安装nagios

自启动配置

6.cgi脚本权限配置

7.编译并安装nagios插件 nagios‐plugins

8.nrpe安装

vi /etc/services
加入以下:

9.启动xinetd服务

10.nrpe测试

11.web页面访问测试

http://ip/nagios

分类: monitor, nagios 标签: ,

cacti中spine安装配置详解

2011年3月17日 没有评论
最近装了台server用来对网络设备进行准实时监控
系统组成
Centos5.2
mysql -4.1.22
php-4.6.4
apache2.1.2
 
cacti 0.8.7d
rrdtool 1.0.5 为什么还使用1.0.5呢,主要是这个版本集成了很多库,安装调试方便,而只是生成的图稍微颗粒点,没有多大的关系。
NET-snmp5.1.22
spine-0.8.7c
本来不打算安装spine的,就使用cmd.php来完成数据采集,可是后来发现cmd.php采集存在很大的延迟,执行效率太低了。两厢比较了一下,从添加device好到设备up,spine只需要不到一分钟,而cmd等的时间较长,超过10分钟。
当设备down后 2分钟之内spine可以发出alert,而cmd可能需要10分钟以上。
所以还是要使用spine
=========================
顺便一提:最近因为搞这个监控,找来找去到最后发现cacti的报警使用移动的邮箱最好了! 139的邮箱现在提供“邮件到达通知”而且是免费的,只要有邮件到达,就会有一个短消息给你。
2009年3月份139邮箱升级后,邮件到达通知可以有好多选择,支持超长短信了。把接受到的邮件主题和内容作为短信发送给你,长度达到350个字符!
 
使用139邮箱,实现cacti实时报警发送sms的很有效途径,我觉得比网络上现在那些所谓的pushmail及时、准确多了。关键是不用花钱!!
=========================
 
下载的是cacti-spine-0.8.7c
tar -zxvf ./tools/cacti-spine-0.8.7c.tar.gz 按照install文档执行之!
[root@mycentos52 cacti-spine-0.8.7c]# aclocal
[root@mycentos52 cacti-spine-0.8.7c]# libtoolize –force
Using AC_PROG_RANLIB' is rendered obsolete by AC_PROG_LIBTOOL’
Putting files in AC_CONFIG_AUX_DIR, `config’.
[root@mycentos52 cacti-spine-0.8.7c]# autoconf
[root@mycentos52 cacti-spine-0.8.7c]# autoheader
[root@mycentos52 cacti-spine-0.8.7c]# automake
[root@mycentos52 cacti-spine-0.8.7c]# ./configure
-bash: ./configure: Permission denied
[root@mycentos52 cacti-spine-0.8.7c]# chmod 755 configure
[root@mycentos52 cacti-spine-0.8.7c]# ./configure
checking build system type… i686-redhat-linux-gnu
checking host system type… i686-redhat-linux-gnu
checking for a BSD-compatible install… /usr/bin/install -c
checking for mysql_init in -lmysqlclient_r… no
configure: error: MySQL libraries not found
下载 mysql的共享包
检查安装位置:
rpm -qlp  MySQL-shared-standard-4.1.22-0.rhel4.i386.rpm
/usr/lib/libmysqlclient.so
/usr/lib/libmysqlclient.so.15
/usr/lib/libmysqlclient.so.15.0.0
/usr/lib/libmysqlclient_r.so
/usr/lib/libmysqlclient_r.so.15
/usr/lib/libmysqlclient_r.so.15.0.0
/usr/lib/libndbclient.so
/usr/lib/libndbclient.so.2
/usr/lib/libndbclient.so.2.0.0
执行安装:
[root@mycentos52 tools]# rpm -ivh MySQL-shared-standard-4.1.22-0.rhel4.i386.rpm
Preparing…                ########################################### [100%]
   1:MySQL-shared-standard  ########################################### [100%]
查看:
[root@mycentos52 tools]# cd /usr/lib
[root@mycentos52 lib]# ls libmysql*
libmysqlclient_r.so     libmysqlclient_r.so.14.0.0  libmysqlclient.so.14
libmysqlclient_r.so.14  libmysqlclient.so           libmysqlclient.so.14.0.0
[root@mycentos52 lib]#
执行spine的编译:
[root@mycentos52 cacti-spine-0.8.7c]#./configure
checking for mysql_thread_init in -lmysqlclient_r… yes
configure: error: Cannot find SNMP headers.  Use –with-snmp= to specify non-default path.
提示snmp的目录没有发现,指定自己安装的snmp的目录后再进行编译
[root@mycentos52 cacti-spine-0.8.7c]# ./configure –with-snmp=/usr/local/net-snmp/ 
checking if UCD-SNMP needs crypto support… no
checking if Net-SNMP needs crypto support… yes
checking for snmp_timeout in -lnetsnmp… yes
checking for the spine results buffer size… 1024 bytes
checking for the maximum simultaneous spine .s… 20
checking for the maximum MySQL buffer size… 65536
checking whether we are using nifty popen… no
checking for glibc gethostbyname_r… yes
checking for Solaris/Irix gethostbyname_r… no
checking for HP-UX gethostbyname_r… no
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config/config.h
config.status: executing depfiles commands
编译成功了!
下面 make;make install
将产生spine的安装目录[root@mycentos52 spine]#pwd
/usr/local/spine
[root@mycentos52 spine]#cp ./etc/spine.conf.dist ./spine.conf 建立spine的配置文件
[root@mycentos52 etc]# vi spine.conf
检查数据库名、用户名等
试着运行spine看行不行?、
 ./spine
SPINE: Using spine config file [spine.conf]
MYSQL: Connection Failed: Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
11/02/2007 04:02:51 PM – SPINE: Poller[0] FATAL: Connection Failed: Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2) (Spine init)
google问题,最后
在/var/lib/ 下建立mysql文件夹
[root@monitor mysql]# pwd
/var/lib/mysql
[root@monitor mysql]#
[root@monitor mysql]# ln -s /tmp/mysql.sock  /var/lib/mysql/mysql.sock
产生一个mysql.sock 的文件。 和tmp目录下的连接起来。 tmp下的mysql.sock 是安装mysql的时候产生的,而/var/lib/mysql/mysql.sock ln产生的。
然后
[root@mycentos52 bin]# ./spine
SPINE: Using spine config file [../etc/spine.conf]
SPINE: Version 0.8.7c starting
SPINE: Time: 2.8546 s, Threads: 1, Hosts: 5
[root@mycentos52 bin]#
不知道spine的conf文件是怎么回事,一定要到/var/lib/mysql/下去找mysql.sock 这个文件。也不知道怎么调整。所以就做了这么个ln来解决。

cacti中的配置

修改Cacti配置

Console -> Cacti Settings->Paths->Spine Poller File Path
填入cacti-spine安装路径
/usr/local/spine/bin/spine
我友博客
修改Cacti使用的Poller Type
Console -> Cacti Settings->Poller->Poller Type
在下拉中选择spine
我友博客

Starting nagios:This account is currently not available nagios启动报错

2011年3月14日 没有评论

如果出现如下的提示修改nagios的shell

Starting nagios:This account is currently not available.

[root@client3 etc]# service nagios restart
Running configuration check…done.
Stopping nagios: done.
Starting nagios:This account is currently not available.
 done.

解决方法:

修改/etc/passwd

将/sbin/nologin改成/bin/bash

分类: monitor 标签:

nagios和cacti整合-实测

2011年3月8日 没有评论

这里nagios和cacti的安装我就不作讲解,主要是ndoutils和pnp的安装过程。

json模块的安装,这里参考本博客

ndoutils-1.4b安装
这个软件其实是将Nagios的配置及监控信息存储到数据库里,NPC通过调用ndo所存储的数据来展
现Nagios的信息 下载ndoutils-1.4b7.tar.gz,我试过ndoutils-1.4b9.tar.gz遇到几次挫折,没配
置成功,我就换这个版本。

依照自己安装的mysql-lib和mysql-inc指定它的目录,我的mysql是yum安装的,所有路径是默认
路径。如果configure没有任何错误信息,就可以make一下,make后我们仅需要它的部分文件。
执行make来进行编译
编译完成后(不需要make install)

进入 ndoutils-1.4b7/src目录<以下为ndo的执行文件>

进入 ndoutils-1.4b7/config目录<以下为ndo的配置文件>

配置ndo2db.cfg

以上为需要根据自己的实际情况配置的信息,其他配置可以根据自己需求来进行配置。

配置ndomod.cfg

以上是需要根据自己的实际情况修改的,yum安装和源码安装相关文件的位置可能不一样,根据自己
的情况来写吧,ndo默认的配置是按照源码默认安装的文件配置的。
配置nagios.cfg文件

以上为需要更改的nagios.cfg的内容。

7 Npc的安装

解压,然后将整个文件夹cp至/var/www/html/cacti/plugins/下
修改/var/www/html/cacti/include/global.php
添加:

让cacti知道有这个插件

在’User Management’中选择’admin’,在下边’Realm Permissions’中钩选’Plugin Management’。这
时右侧会出现’Plugin Management’连接,进去后在’uninstalled’中安装npc,然后在’intalled’中
enable npc,然后在回去admin的’Realm Permissions’中会出现’use npc’,如果没有钩选就把它选中。

接着在右侧栏目中选择settings,点选npc的标签
钩选Remote Commands
Nagios Command File Path: /var/nagios/rw/nagios.cmd
<这个文件启动nagios后会产生,根据实际的位置写>
Nagios URL: http://yourserver/nagios/
保存就可以了。

至此安装就完成了
启动mysql httpd ndo nagios

访问http://yourserver/cacti/
选择npc标签就可以看到nagios所检测的主机信息,唯一不足的是我打开这个页面的速度有些慢,需要进一步寻找原因来进行优化

nagios日志:

如果是下面这样是正确的
ndomod: NDOMOD 1.4b7 (10-31-2007) Copyright (c) 2005-2007 Ethan Galstad (nagios@nagios.org)
[1272020945] ndomod: Successfully connected to data sink.  4897 queued items to flush.
[1272020951] ndomod: Successfully flushed 4897 queued items to data sink.
[1272020951] Event broker module ‘/usr/local/nagios/bin/ndomod-3x.o’ initialized successfully.

可能出现的问题
1.npc页面空白或者提示无法访问npc.php
确认安装并配置php-jsion正确
2.cacti无图或者没有数据
这个问题很多
检查ndo2db.cfg 里面的数据库配置。
3.出现类似Error: Missing Dependency: mysql = 5.0.45-7.el5 is needed by package mysql-server的情况
请删除系统中已经安装的包,例如已经安装不同版本的mysql则出现上述问题

下面是我的截图。

nagios和cacti整合 我友博客

nagios和cacti整合 我友博客

nagios和cacti整合 我友博客

nagios和cacti整合 我友博客

Cacti的监控插件安装和使用

2011年3月7日 没有评论

本文链接: http://www.php-oa.com/2009/06/04/plugin-architecture.html

1,安装cacti的Plugin Architecture
要安装别的插件前,先要安装cacti的一个patch--Plugin Architecture,才能支持插件
PA和cacti版本的关系
PA 1.0 = cacti 0.8.6i
PA 1.1 = cacti 0.8.6i et 0.8.6j
PA 2.0 = cacti 0.8.7b
PA 2.2 = cacti 0.8.7c
PA 2.4 = cacti 0.8.7d

我们用的0.8.7所以用最新的2.4
wget http://mirror.cactiusers.org/downloads/plugins/cacti-plugin-0.8.7d-PA-v2.4.zip
unzip cacti-plugin-0.8.7d-PA-v2.4.zip -d cacti-plugin-arch
cp -R cacti-plugin-arch/* /usr/share/cacti/
#cd /usr/share/cacti/
#mysql -ucacti -p cacti < pa.sql 如果你是中文的cacti,就执行下面的命令(需要下载) patch -p1 -N < cacti-plugin-0.8.7d-PA-v2.4-cn-utf8.diff 如果你是英文的,就下载原来的 patch -p1 -N < cacti-plugin-0.8.7d-PA-v2.4.diff 这样做完后,可能会图象不对(前提,你设置的url是http://xxx/cacti),那么需要修改如下的内容. vim include/global.php $config['url_path'] = ‘/cacti/’; 进入"用户管理"->点admin->区域权限->Plugin Management

安装settings,thold,monitor插件
monitor插件,提供更简略、直观的设备状态图示;
thold插件,提供设备异常预警。

cd cacti/plugins
#wget http://mirror.cactiusers.org/downloads/plugins/settings-0.5.tar.gz
#tar zxvf settings-0.5.tar.gz
#wget http://mirror.cactiusers.org/downloads/plugins/thold-0.4.1.tar.gz
#tar zxvf thold-0.4.1.tar.gz
#wget http://cactiusers.org/downloads/monitor.tar.gz
#tar zxvf monitor.tar.gz

#vim ../include/global.php
在$plugins = array();的后面加上如下内容
$plugins[] = ‘thold’;
$plugins[] = ‘settings’;
$plugins[] = monitor;

使用插件
使用monitor插件
刷新cacti系统的web管理界面,可以看到多出两个标签页(thold、monitor)。
1>打开“Console->Settings->Misc”,可以调整Monitor的各项配置。例如:勾选“Show Icon Legend”可以在监控页面显示图例;
“View”可以选用Tiles类型,以显示设备状态表格。
2>为cacti添加新设备时,勾选上“Monitor Host”项。对已添加的设备可以通过“Management->Devices”进去修改。
3>单击Web页面上方的“monitor”标签链接,可以进入查看各设备/主机的状态图示。

使用thold插件
1>打开“Console->Settings->Mail/DNS”,可以调整“SMTP Options”和“DNS Options”等配置,用于确保预警邮件能够发出。
2>打开“Console->Settings->Alerting/Thold”,可以调整Thold的各项配置。例如:“Dead Host Notifications Email”处可填写设备当机时发送警告信息到哪个邮箱;勾选“

Send alerts as text”项,可以设置只发送文本格式的邮件。
3>打开“Templates->Threshold Templates”,可以添加、取出需要关联到预警系统的模板,例如:可以添加和“Interface-Traffic”模板的关联,选择 “traffic_in”、

“traffic_out”数据项,分别设置警告阈值“High Threshold”(如200000000比特/秒);可以添加和“Unix-Disk Space”模板的关联……。
4>打开“Create->New Graphs”,选择需要提供预警的设备,单击右侧上方的“Auto-create thresholds”创建预警项目。
5>打开“Management->Thresholds”,可以管理已经创建的预警项目。

中文cacti安装完全使用手册

2011年3月7日 1 条评论

1、安装apache
tar xvf httpd-2.2.15.tar.tar
cd httpd-2.2.15
makedir /usr/local/apache2
./configure –prefix=/usr/local/apache2 –enable-so –enable-mods-shared=most –with-mpm=worker –enable-disk-cache –enable-mem-cache
make
make install

2、安装mysql
安装mysql
rpm -ivh MySQL-client-community-5.1.49-1.rhel5.i386.rpm
rpm -ivh MySQL-devel-community-5.1.49-1.rhel5.i386.rpm
rpm -ivh MySQL-server-community-5.1.49-1.rhel5.i386.rpm
service mysql stop
cp /usr/share/mysql/my-medium.cnf /etc/my.cnf
service mysql start

3、安装php(php不能用5.3及以上的版本,因为废除了以前很多函数。导致cacti的程序不兼容)
3.1、安装jpegsrc.v6b.tar.gz
mkdir /usr/local/jpeg6
mkdir /usr/local/jpeg6/bin
mkdir /usr/local/jpeg6/lib
mkdir /usr/local/jpeg6/include
mkdir /usr/local/jpeg6/man
mkdir /usr/local/jpeg6/man/man1
gunzip jpegsrc.v6b.tar.gz
tar xvf jpegsrc.v6b.tar
cd jpeg-6b/
./configure –prefix=/usr/local/jpeg6 –enable-shared –enable-static
make
make install

3.2、安装libpng-1.4.3.tar.gz
gunzip libpng-1.4.3.tar.gz
tar xvf libpng-1.4.3.tar
cd libpng-1.4.3
./configure –prefix=/usr/local/libpng
make
make install

3.3、安装freetype-2.4.1.tar.gz
gunzip freetype-2.4.1.tar.gz
tar xvf freetype-2.4.1.tar
cd freetype-2.4.1
./configure –prefix=/usr/local/freetype
make
make install

3.4、安装zlib-1.2.5.tar.gz
gunzip zlib-1.2.5.tar.gz
tar xvf zlib-1.2.5.tar
cd zlib-1.2.5
./configure –prefix=/usr/local/zlib
make
make install

3.5、安装gd库
前提是要安装 gettext
gunzip gettext-0.18.1.1.tar.gz
tar xvf gettext-0.18.1.1.tar
cd gettext-0.18.1.1
./configure –prefix=/usr/local/gettext
make
make install
最好装gettext-devel以便能找到对应的库文件,否则会报错

gunzip gd-2.0.35.tar.gz
tar xvf gd-2.0.35.tar
cd gd-2.0.35
./configure –prefix=/usr/local/gd2 –with-jpeg-dir=/usr/local/jpeg6 –with-png=/usr/local/libpng –with-zlib-dir=/usr/local/zilb –with-freetype=/usr/local/freetype –enable-m4_pattern_allow
make
make install

3.6、安装libxml2-2.7.7.tar.gz
gunzip libxml2-2.7.7.tar.gz
tar xvf libxml2-2.7.7.tar
cd libxml2-2.7.7
./configure –prefix=/usr/local/libxml2
make
make install

3.7、安装libxslt-1.1.22.tar.gz
gunzip libxslt-1.1.22.tar.gz
tar xvf libxslt-1.1.22.tar
cd libxslt-1.1.22
./configure –prefix=/usr/local/libxslt –with-libxml-prefix=/usr/local/libxml2
make
make install

3.8、安装php5
gunzip php-5.2.14.tar.gz
tar xvf php-5.2.14.tar
cd php-5.2.14
./configure –prefix=/usr/local/php5 –with-apxs2=/usr/local/apache2/bin/apxs –with-mysql –with-gd=/usr/local/gd2 –with-ttf –with-freetype-dir=/usr/local/freetype –with-jpeg-dir=/usr/local/jpeg6 –with-png-dir=/usr/local/libpng –with-zlib-dir=/usr/local/zlib –with-iconv –enable-xml –enable-mbstring –enable-sockets –enable-gd-native-ttf –enable-track-vars –enable-force-cgi-redirect –with-config-file-path=/usr/local/php5/etc
make
make install

cp php.ini-development /usr/local/php5/etc/php.ini
vi /usr/local/php5/etc/php.ini将register_globals = Off改成register_globals = On
;date.timezone = 改为date.timezone = utc
;extension=php_mbstring.dll 改为 extension=php_mbstring.dll
;mbstring.func_overload = 0修改为:mbstring.func_overload = 7

配置apache
最后修改httpd.conf,使apache能使用php,增加如下参数
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
AddType image/x-icon .ico

DirectoryIndex index.php index.html index.html.var

4、安装rrd
4.1、安装cgilib
gunzip cgilib-0.5.tar.gz
tar xvf cgilib-0.5.tar
cd cgilib-0.5
make CC=gcc CFLAGS=”-O3 -fPIC -I.”
mkdir -p /usr/local/cgilib/include
cp *.h /usr/local/cgilib/include/
mkdir -p /usr/local/cgilib/lib
cp libcgi* /usr/local/cgilib/lib/

4.2、安装libart_lgpl-2.3.21.tar.gz
gunzip libart_lgpl-2.3.21.tar.gz
tar xvf libart_lgpl-2.3.21.tar
cd libart_lgpl-2.3.21
./configure –disable-shared –prefix=/usr/local/libart_lgpl
make
make install

编辑/etc/ld.so.conf,增加如下参数
/usr/local/zlib/lib
/usr/local/freetype/lib
/usr/local/jpeg6/lib
/usr/local/cgilib/lib
/usr/local/libart_lgpl/lib
配置完后执行ldconfig命令,使用动态装入器装载到共享库

4.3、安装rrdtool(最好用1.3,目前cacti能支持的最高只到1.3)
gunzip rrdtool-1.4.4.tar.gz
tar xvf rrdtool-1.4.4.tar
cd rrdtool-1.4.4
./configure –prefix=/usr/local/rrdtool –disable-python –disable-tcl
make
make install

5、安装net-snmp
gunzip net-snmp-5.5.tar.gz
tar xvf net-snmp-5.5.tar
cd net-snmp-5.5
./configure –prefix=/usr/local/net-snmp –enable-developer
make
make install
ln -s /usr/local/net-snmp/bin/* /usr/local/bin
cp EXAMPLE.conf /usr/local/net-snmp/share/snmp/snmpd.conf

启动net-snmp
/usr/local/net-snmp/sbin/snmpd
可以在rc.local里面设置为自动启动

6、安装cacti
useradd cactiuser -g users
passwd cactiuser
gunzip cacti-0.8.7e-cn-utf8.tar.gz
gunzip cacti-plugin-0.8.7e-PA-v2.5-cn-utf8.diff.gz
cp cacti-0.8.7e-cn-utf8.tar /usr/local/apache2/htdocs/
cd /usr/local/apache2/htdocs/
tar xvf cacti-0.8.7e-cn-utf8.tar
mv cacti-0.8.7e-cn-utf8 cacti
cd cacti
mv ./* ../
cd ../
patch -p1 < /root/software/cacti-plugin-0.8.7e-PA-v2.5-cn-utf8.diff mysql -uroot mysql>create database cacti default character set utf8;
mysql>grant all on cacti.* to cactiuser@localhost identified by ‘cactiuser’;
mysql>flush privileges;
mysql>quit
mysql -uroot cactirrdtool应该程序的版本改成安装的版本(1.3.x)
路径–>设置不对的文件名,改成正确的路径+文件名

Cacti的使用简易教程
1. 监控远程Linux主机
开启远程主机的SNMPD服务

2. 在Cacti里,进行如下操作,步骤的过程为:添加Devices(增加设备)->Graphs(增加图象)->Tree(增加到图象树)
2.1. Console->Management->Devices->add (增加监控设备)
Description:主机描述,可随便写
Hostname:主机IP地址
Host Template:主机模板,可以选UCD/Net snmp Host,也可以选None
SNMP Community:主机中的Community字段值,默认是public
SNMP Version:一般选Version1或Version2
2.2. Console->Management->Devices 选中刚才添加的主机,进入编辑界面(给监控主机增加要生成的”图像模板”和进行的”数据查询”)
Associated Graph Templates:加入
1) ucd/net – CPU Usage
2) ucd/net – Load Average
3) ucd/net – Memory Usage
如果是本机,可以加入以下模板:
1) Linux – Memory Usage
2) Unix – Ping Latency
3) Unix – Load Average
4) Unix – Logged in Users
5) Unix – Processes
Associated Data Queries:加入
1) SNMP – Interface Statistics
2.3. Console->Create ->New Graphs(生成2.2步骤中增加的图象和数据)
在列表框中选中刚添加的主机,再选中所有Graph Templates和Data Query,再Create。
2.4. Console->Management->Graph Trees->Default Tree->Add(使生成的图象和数据能在”查看图象”即在”Graphs”中以图象的方式显示出来)
Parent Item:父节点,默认是根
Tree Item Type:节点类型,Host
Host:选择主机
Sorting Type:排序方式
[Create]
2.5. Graphs->Default Tree->HostName查看看监控结果

3. 监控本地机
默认Cacti自动安装了监控本地机的模板,也可以自己重建,可按上面的方式,在第一步的Host Template中,选Local Linux Host就可,或者直接用IP,不用本地方式。
4. 日志
日志设置:Console -> Settings -> General -> Poller Logging Level,一般选Low既可,可以选Medium查看SNMPWALK的输出,Debug调试。
日志查看:Console -> Utilities -> View Log File
日志清除:Console -> Utilities -> Clear Log File
5. 图表删除
直接在Devices里删除主机,将删除相关所有数据。
在Console -> Graph Management里的Graph Management可单独删除一个图表,在Data Sources可删除一个查询。
6. 树的管理
Console -> Graph Trees,可以很方便的管理多台主机,将多台主机组成一个树形结构,并且,可以为树指定用户权限.
7. 权限的管理
Console -> User Management,可以管理用户,并指定权限.

报警的实现:

如果需要提供报警功能还需要安装其他插件
1、增加cacti插件的方法:为cacti系统安装Thold、Monitor等插件

插件下载地址:http://cactiusers.org/downloads/
注意下载时注意相应版本,版本不对会产生问题。

monitor插件,提供更简略、直观的设备状态图示;
thold插件,提供设备异常预警。

安装thold、monitor插件:注意要先备份一下

(1)、安装Plugin Architecture补丁,安装后,才能启用thold、monitor插件

shell> tar zxvf cacti-plugin-arch.tar.gz -C /var/www/cacti
shell> cd /var/www/cacti/
shell> patch -p1 -N < cacti-plugin-arch/cacti-plugin-0.8.7a-PA-v2.1.diff shell> /opt/mysql/bin/mysql -u cactiuser -p cactidb < pa.sql (2)、安装thold、monitor插件 shell> tar zxvf settings-0.5.tar.gz -C /var/www/cacti/plugins
shell> tar zxvf thold-0.3.4.tar.gz -C /var/www/cacti/plugins
shell> tar zxvf monitor-0.8.2.tar.gz -C /var/www/cacti/plugins

shell> cd /var/www/cacti/plugins/
shell> /opt/mysql/bin/mysql -u cactiuser -p cactidb < thold/thold.sql shell> /opt/mysql/bin/mysql -u cactiuser -p cactidb < monitor/monitor.sql (3)、修改config.php配置文件 shell> vi /var/www/cacti/include/config.php

$config[‘url_path’] = “/cacti/”; //改为cacti对应于web目录下的路径,本处为cacti
$plugins = array();
$plugins[] = thold;
$plugins[] = monitor;

(4)、刷新cacti系统的web管理界面,可以看到多出两个标签页(thold、monitor)。

(5)、使用monitor插件

1>打开“Console->Settings->Misc”,可以调整Monitor的各项配置。例如:勾选“Show Icon Legend”可以在监控页面显示图例;

“View”可以选用Tiles类型,以显示设备状态表格。
2>为cacti添加新设备时,勾选上“Monitor Host”项。对已添加的设备可以通过“Management->Devices”进去修改。
3>单击Web页面上方的“monitor”标签链接,可以进入查看各设备/主机的状态图示。

(6)、使用thold插件

1>打开“Console->Settings->Mail/DNS”,可以调整“SMTP Options”和“DNS Options”等配置,用于确保预警邮件能够发出。
2>打开“Console->Settings->Alerting/Thold”,可以调整Thold的各项配置。例如:“Dead Host Notifications Email”处可填写设备当机时发送警告信息到哪个邮箱;勾选“Send alerts as text”项,可以设置只发送文本格式的邮件。
3>打开“Templates->Threshold Templates”,可以添加、取出需要关联到预警系统的模板,例如:可以添加和“Interface-Traffic”模板的关联,选择“traffic_in”、“traffic_out”数据项,分别设置警告阈值“High Threshold”(如200000000比特/秒);可以添加和“Unix-Disk Space”模板的关联……。
4>打开“Create->New Graphs”,选择需要提供预警的设备,单击右侧上方的“Auto-create thresholds”创建预警项目。
5>打开“Management->Thresholds”,可以管理已经创建的预警项目。

2、cacti监控硬盘I/O的方法:

cacti本身的模板只可以监控硬盘的使用大小,而不能监控使用百分率,所以我们可以自定义cdef来监控硬盘使用率,并借助thold插件实现报警功能。网上找的资料都是在cacti.0.8.6版上实现的,而我用的是cacti.0.8.7版。因此,根据实际情况做如下改动:

在cacti目录下,vi global_arrays.php
搜索custom_data_source_types,修改这一段如下:

$custom_data_source_types = array(
“CURRENT_DATA_SOURCE” => “Current Graph Item Data Source”,
“ALL_DATA_SOURCES_NODUPS” => “All Data Sources (Don’t Include Duplicates)”,
“ALL_DATA_SOURCES_DUPS” => “All Data Sources (Include Duplicates)”,
“SIMILAR_DATA_SOURCES_NODUPS” => “All Similar Data Sources (Don’t Include Duplicates)”,
“SIMILAR_DATA_SOURCES_DUPS” => “All Similar Data Sources (Include Duplicates)”,
“CURRENT_DS_MINIMUM_VALUE” => “Current Data Source Item: Minimum Value”,
“CURRENT_DS_MAXIMUM_VALUE” => “Current Data Source Item: Maximum Value”,
“CURRENT_GRAPH_MINIMUM_VALUE” => “Graph: Lower Limit”,

//添加以下两行
“CURRENT_GRAPH_MAXIMUM_VALUE” => “Graph: Upper Limit”,
“VALUE_OF_HDD_TOTAL” => “Value of hdd_total data source”);

//中文版汉化为:
“CURRENT_GRAPH_MAXIMUM_VALUE” => “图像: 上限”,
“VALUE_OF_HDD_TOTAL” => “所有硬盘数据的值”);

在cacti界面的Graph Management-cdefs新建cdef模块,名字自己起,添加字段如下:

Item #1 Special Data Source: CURRENT_DATA_SOURCE
Item #2 Custom String: 100
Item #3 Operator: *
Item #4 Special Data Source: VALUE_OF_HDD_TOTAL
Item #5 Operator: /

也就是说
cdef=CURRENT_DATA_SOURCE,100,*,VALUE_OF_HDD_TOTAL,/

这样就可以在Threshold Templates里面添加监控硬盘的模块了,我添加的是Host MIB – Hard Drive Space ,最后在Threshold CDEF里面选择刚自定义的cdef,这样就可以正常监控硬盘使用率了。

官方论坛上有介绍,地址http://forums.cacti.net/about8777-0-asc-0.html

下面把使用方法摘录如下:

1. Copy net-snmp_devio.xml to /resource/snmp_queries/net-snmp_devio.xml

2. Import all *_templ.xml via Cacti “Import Templates” interface – These templates should include all their dependancies

3. Add “ucd/net – Get Device I/O” Data Query to your SNMP Enabled host using the “Index Count Changed” Re-index Method.

4. Create Graphs for your desired Disk and/or Memory devices.

总体注意事项:

1)、很重要的一点:在cacti的设备中一定要选择snmp的版本为>=2,否则会获取不到cpu和网卡等相关信息。

2)、cacti自带的local视图内存监控单位是错误的,可以删掉重新创建,就会改正。

3)、系统监控中,cpu图标的 200m这类数字,表示的是 万分之多少,我的理解cacti是为了方便显示画图。

4)、权限问题:cacti_path/rra log目录的权限一定要给cacti的新用户,否则会出错:有图,但是没有数据。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/passion_wang/archive/2010/08/13/5809198.aspx

cacti相关优化配置

2011年3月7日 1 条评论

转载:http://www.scomd.com/read.php?18
1.使用spine
前面已经编译过spine,在spine配置文件中修改数据库的信息,否则将无法连接数据库。
控制面板—-设置——路径——Spine轮询器路径:/usr/local/spine/bin/spine
控制面板—-设置——轮询器——轮询器类型:spine

2.进程调整
对于进程的和线程的调整有利于缩短采集时间,可以进行大量的采集。我在论坛上看有人说cacti能够同时采集1k服务,这样的性能没有测试过,不过我测试过同时采集200台服务器的,占用的内容只有几百兆,cpu的利用率也很低,说明一台的普通的机器排除网络链路延时采集的性能是相当强悍的。
控制面板—-设置——轮询器——最大并发轮询器进程
控制面板—-设置——轮询器——每进程最大线程数
控制面板—-设置——轮询器——PHP脚本服务程序数
修改以上三个参数
3.加大php 的内存使用的上限
# vi /etc/php.ini
memory_limit = 32M (预设是 8mb, 可以改大一点)

4.定期 optimize cacti 数据库
cacti 的 poller_output 会不明原因的长大,大到数据越写越慢,直到无法更新。每隔一段时间手动 “Truncate poller_output table” 后,就会继续正常运作。利用crontab定期清除数据。
# crontab -e
0 0 * * 0 /usr/local/mysql/bin/mysql -u root –password=Vale.com-Cacti cacti -e ‘truncate table poller_output;’

5.修改mysql的最大连接数
一般默认安装的时候没有调整最大连接数的话,只有100,当需要并发量的时候可以出图就断断续续的。
mysql> set GLOBAL max_connections=200000;

分类: monitor 标签:

nagios各种报警设置

2011年3月7日 没有评论

一、网页报警
1。修改cgi.cfg 去掉下面几行注释
host_unreachable_sound=hostdown.wav
host_down_sound=hostdown.wav
service_critical_sound=critical.wav
service_warning_sound=warning.wav
service_unknown_sound=warning.wav
normal_sound=noproblem.wav
2。在/usr/local/nagios/share/media/应该有相应的声音文件(这个默认没有的,需要自己添加)

二、邮件报警 (使用sendEmail 发送邮件)
# wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
# tar –zxvf sendEmail-v1.55.tar.gz
# cd sendEmail-v1.56
# cp sendEmail /usr/local/bin
# chmod 0755 /usr/local/bin/sendEmail
#. /usr/local/bin/sendEmail –f nagios@scomd.com–t mail@scomd.com –s mail.scomd.com –u “from nagios” –xu nagios –xp scomd –m nagios test
-f 表示发送者的邮箱
-t 表示接收者的邮箱
-s 表示SMTP服务器的域名或者ip
-u 表示邮件的主题
-xu 表示SMTP验证的用户名
-xp 表示SMTP验证的密码(注意,这个密码貌似有限制,例如我用d!5neyland就不能被正确识别)
-m 表示邮件的内容

修改commands.cfg
define command{
command_name notify-host-by-email
command_line /usr/bin/printf “%b” “***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n” | /usr/local/bin/sendEmail -f nagios@scomd.com -t nagios@scomd.com -s mail.scomd.com -u “from nagios” -xu nagios -xp scomd ; /bin/mail -s “** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **” $CONTACTEMAIL$
}

# ‘notify-service-by-email’ command definition
define command{
command_name notify-service-by-email
command_line /usr/bin/printf “%b” “***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$” | /usr/local/bin/sendEmail -f nagios@scomd.com -t nagios@scomd.cn -s mail.scomd.com -u “from nagios” -xu nagios -xp scomd
}
发现一个小问题,我用163测试,密码错误的也可以发送。
三、飞信报警 (移动用户必须开通飞信业务)
#wget http://www.it-adv.net/fetion/downng/fetion20091117-linux.tar.gz
#tar –zxvf fetion20091117-linux.tar.gz
#cd fx
LD_LIBRARY_PATH=. ./fetion –mobile=13691515**** –pwd=mypwd –to=13691515****–msg-utf8=test
发送成功后可进行整合。发送不成功请关注http://www.it-adv.net网站的说明
编辑commands.cfg,增加host-notify-by-fetion和service-notify-by-fetion命令的定义
define command {
command_name host-notify-by-fetion
command_line LD_LIBRARY_PATH=/usr/local/nagios/fx /usr/local/nagios/fx/fetion –mobile=13691515****–pwd=passwd –to=13691515**** –msg-utf8=”Host $HOSTSTATE$ alert for $HOSTNAME$! on ‘$LONGDATETIME$'” $CONTACTPAGER$
}

define command {
command_name service-notify-by-fetion
command_line LD_LIBRARY_PATH=/usr/local/nagios/fx /usr/local/nagios/fx/fetion –mobile=13691515**** –pwd= passwd –to=13691515**** –msg-utf8=”$HOSTADDRESS$ $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ on $LONGDATETIME$” $CONTACTPAGER$
}

编辑contact.cfg,添加短信通知
define contact{
contact_name nagiosadmin
use generic-contact
alias Nagios Admin
email stcomd@163.com
service_notification_commands notify-service-by-email,service-notify-by-fetion
host_notification_commands notify-host-by-email,host-notify-by-fetion
pager 13691515****
}

分类: monitor 标签: ,