LNMP+Cacti+Nagios+ndo2+Npc

Cacti 多用於圖形監測系統性能 負載等      
Nagios 多用於報警 php

Cacti: 是一套基於PHP,MySQL,SNMP及RRDTool開發的網絡流量監測圖形分析工具.        
Nagios:是一款開源的免費網絡監視工具,能有效監控Windows、Linux和Unix的主機狀態,在系統或服務狀態異常時發出郵件或短信報警第一時間通知網站運維人員,在狀態恢復後發出正常的郵件或短信通知.        
Npc: 是一個cacti的插件.用於講 Cacti和Nagios整合. html

注意以下幾點      
1.Cacti 須要 LNMP 或者 LAMP 做爲平臺        
2.Nagios 須要web服務器支持cgi        
3.Cacti 是經過 net-snmp 來採集數據的. 客戶機須要安裝net-snmp mysql

4.本文不過多的介紹配置文件和軟件使用方法 只標註管簡單 多去學習才能更好的掌握各類知識linux

本文以 Centos 5.4 做爲平臺來搭建      
   LNMP 環境以下        
   mysql 5.5.27        
   php 5.4.6        
   nginx1.2.3 ios

Lnmp 安裝方法:      
http://wangshuai1987.blog.51cto.com/3080273/1294909nginx

讓nginx支持cgi 的方法      
http://wangshuai1987.blog.51cto.com/3080273/1341415web

############################################################################## sql

注意,此處只標記. 不要使用該部分命令. 是爲了整理看着清爽.具體安裝步驟,着重參考安裝正文 shell

Cacti版本:cacti-0.8.8a.tar.gz 數據庫

Nagios版本:nagios-3.4.1.tar.gz      
      nagios-plugins-1.4.16.tar.gz

須要安裝的軟件包        
Nagios:        
yum install -y gd gd-devel xinetd libart_lgpl

Cacti:      
yum -y install libart_lgpl-devel libpng-devel freetype-devel libart_lgpl-devel fonts-chinese cairo-devel pango-devel


先來幾張圖,把關鍵位置標註出來. 從正文開始 大篇幅安裝步驟 不單獨出圖

下面的幾個圖 只是關鍵點

p_w_picpath

New Graphs:新建圖形      
Graph Management:圖形管理        
Data Sources:數據源        
Devices:添加主機活設備在這        
Plugin Management:插件管理        
System Utilities: 若是不出圖 點這個菜單 把 view xxxx cache 都點一次 清理下緩存

p_w_picpath



幾個設置的時候要注意的地方

p_w_picpath



cacti 優化參考

全部參數 不可全抄 要根據實際狀況修改

p_w_picpath

npc 插件設置
p_w_picpath

##################################################      
#################  安裝正文  #####################        
##################################################        
# 安裝cacti須要的包        
yum install -y gd gd-devel xinetd libart_lgpl

# 創建nagios用戶 用於維護nagios      
/usr/sbin/useradd nagios        
#passwd nagios

# 創建nagioscmd組 用於執行cgi程序 和其餘nagios程序      
/usr/sbin/groupadd nagcmd

# 將nagios用戶加到nagcmd組      
/usr/sbin/usermod -a -G nagcmd nagios

# 將web用戶加到nagcmd組      
/usr/sbin/usermod -a -G nagcmd web

# 將www用戶加到nagcmd組      
/usr/sbin/usermod -a -G nagcmd www

# 將nagios用戶加到www組      
/usr/sbin/usermod -a -G www nagios

# 下載須要的軟件包

# 官方下載頁面 軟件 和 插件      
# http://www.nagios.org/download/core/thanks/
# http://www.nagios.org/download/plugins/

# 下載軟件和插件包      
wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.4.1.tar.gz
wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.16.tar.gz

# 解壓      
tar zxf nagios-3.4.1.tar.gz        
tar zxf nagios-plugins-1.4.16.tar.gz

# 開始進行便已安裝      
cd nagios        
./configure --prefix=/soft/nagios-3.4.1 --with-command-group=nagcmd        
make all && make install && make install-init && make install-config && make install-commandmode        
cd ../

/usr/bin/install -c -m 775 -o nagios -g nagcmd -d /soft/nagios-3.4.1/var/rw      
chmod g+s /soft/nagios-3.4.1/var/rw

cd nagios-plugins-1.4.16      
./configure --prefix=/soft/nagios-3.4.1 --with-nagios-user=nagios --with-nagios-group=nagios        
make && make install        
cd ../

###########      
若是報錯:        
make: *** No rule to make target `/usr/lib64/perl5/CORE/config.h', needed by `Makefile'.  Stop.        
yum install -y perl-devel.x86_64

# nagios 是由perl編寫的.因此 須要以下perl模塊      
# 提供兩種安裝方式. 推薦手動安裝        
A)經過CPAN 來安裝        
#perl -MCPAN -e shell        
cpan> install Net::SNMP        
###########        
B) 手工安裝        
# 首先去官方網站 http://www.cpan.org 下載如下幾個模塊        
Crypt::DES        
Digest::MD5        
Digest::SHA1        
Digest::HMAC        
Net::SNMP

wget http://search.cpan.org/CPAN/authors/id/D/DP/DPARIS/Crypt-DES-2.05.tar.gz
wget http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/Digest-MD5-2.52.tar.gz
wget http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/Digest-SHA1-2.13.tar.gz
wget http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/Digest-HMAC-1.03.tar.gz
wget http://search.cpan.org/CPAN/authors/id/D/DT/DTOWN/Net-SNMP-v6.0.1.tar.gz

tar zxf Crypt-DES-2.05.tar.gz      
tar zxf Digest-MD5-2.52.tar.gz        
tar zxf Digest-SHA1-2.13.tar.gz        
tar zxf Digest-HMAC-1.03.tar.gz        
tar zxf Net-SNMP-v6.0.1.tar.gz

cd Crypt-DES-2.05      
perl Makefile.PL        
make install        
cd ../

cd Digest-MD5-2.52      
perl Makefile.PL        
make install        
cd ../

cd Digest-SHA1-2.13      
perl Makefile.PL        
make install        
cd ../

cd Digest-HMAC-1.03      
perl Makefile.PL        
make install        
cd ../

cd Net-SNMP-v6.0.1      
perl Makefile.PL        
make install        
cd ../

# 插件位置      
/soft/nagios-3.4.1/libexec

--------------------------------------      
vi /soft/nagios-3.4.1/etc/cgi.cfg

#找到這幾行,後面添加 erbin用戶,能夠本身定義用戶,使用「,」隔開      
#authorized_for_system_information=nagiosadmin,test        
#authorized_for_configuration_information=nagiosadmin,test        
#authorized_for_system_commands=nagiosadmin,test        
#authorized_for_all_services=nagiosadmin,test        
#authorized_for_all_hosts=nagiosadmin,test        
#authorized_for_all_service_commands=nagiosadmin,test        
#authorized_for_all_host_commands=nagiosadmin,test        
use_authentication=0

vi /soft/nagios-3.4.1/etc/objects/contacts.cfg

vi /soft/nagios-3.4.1/etc/cgi.cfg      
url_html_path=/nagios

vi /soft/nagios-3.4.1/etc/nagios.cfg        
cfg_dir=/soft/nagios-3.4.1/etc/servers        
cfg_file=/soft/nagios-3.4.1/etc/objects/hostgroups.cfg

mkdir -p /soft/nagios-3.4.1/etc/servers      
cd /soft/nagios-3.4.1/etc/servers

vi /soft/nagios-3.4.1/etc/objects/hostgroups.cfg      
define hostgroup {        
    hostgroup_name sa-servers        
    alias      sa servers        
    members     localhost,192.168.2.215    #用逗號間隔多個主機        
    }

修改nagiosadmin 這行其中的郵件地址爲你的email 地址,以將報警郵件發到你的郵箱

設置登錄web 界面時HTTP 驗證的帳號密碼      
http://www.4webhelp.net/us/password.php
test:44ofpQvlFOgvs        
vi /soft/nagios-3.4.1/etc/nagiospasswd

---------------------------------------

# 檢測配置文件是否有錯      
/soft/nagios-3.4.1/bin/nagios -v /soft/nagios-3.4.1/etc/nagios.cfg

# 開啓 nagios      
/soft/nagios-3.4.1/bin/nagios -d /soft/nagios-3.4.1/etc/nagios.cfg

mkdir -p /wwwroot/web/

cp -r /soft/nagios-3.4.1/share/ /wwwroot/web/nagios

########## nginx 配置文件關鍵部位代碼      
server_name  192.168.2.215;        
index index.html index.htm index.php;        
root  /wwwroot/web;        
auth_basic "Nagios Access";        
auth_basic_user_file /soft/nagios-3.2.1/etc/nagiospasswd;

location ~ .*\.(cgi|pl|perl)?$      
{        
gzip off;        
root   /soft/nagios-3.2.1/sbin;        
rewrite ^/nagios/cgi-bin/(.*)\.cgi /$1.cgi break;        
fastcgi_pass 127.0.0.1:8999;        
fastcgi_param SCRIPT_FILENAME /soft/nagios-3.2.1/sbin$fastcgi_script_name;        
fastcgi_index index.cgi;        
fastcgi_read_timeout   60;        
fastcgi_param  REMOTE_USER        $remote_user;        
include fcgi.conf;        
auth_basic "Nagios Access";        
auth_basic_user_file /soft/nagios-3.2.1/etc/nagiospasswd;        
}

########################### 開始安裝cacti      
cacti        
yum -y install libart_lgpl-devel libpng-devel freetype-devel libart_lgpl-devel fonts-chinese cairo-devel pango-devel

wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.4.3.tar.gz

tar zxf rrdtool-1.4.3.tar.gz      
cd rrdtool-1.4.3

# 讓rrdtool 支持中文      
sed -i 's/setlocale(LC_NUMERIC, "C")/setlocale(LC_ALL, "zh_CN.UTF-8")/g' src/rrd_graph.c        
sed -i 's/setlocale(LC_NUMERIC, old_locale)/setlocale(LC_ALL, old_locale)/g' src/rrd_graph.c

./configure --prefix=/soft/rrdtool-1.4.3

make && make install

cd ../

# 將 /soft/rrdtool-1.4.3/lib 加入到 /etc/ld.so.conf      
ldconfig

wget http://www.cacti.net/downloads/cacti-0.8.8a.tar.gz
tar zxf cacti-0.8.8a.tar.gz        
cp -r cacti-0.8.8a /wwwroot/web/cacti        
cd /wwwroot/web/cacti

mysql -uroot -p      
mysql>drop database cacti;        
mysql>create database cacti;        
mysql>use cacti;        
mysql>source cacti.sql;        
mysql>grant all privileges on cacti.* to cacti@localhost identified by "cacti";        
mysql>grant all privileges on cacti.* to cactiuser@localhost identified by "cactiuser";        
mysql>flush privileges;        
mysql>exit

# 修改數據庫信息      
vi include/config.php

# 修改php配置文件,修改時區      
vi /soft/php-5.4.6/etc/php.ini        
safe_mode = Off        
date.timezone = "PRC"

# 保存退出 並重啓

wget http://sourceforge.net/projects/net-snmp/files/net-snmp/5.6.1.1/net-snmp-5.6.1.1.tar.gz/download
tar zxf net-snmp-5.6.1.1.tar.gz        
cd net-snmp-5.6.1.1        
# 編譯第一步 版本是2        
./configure --prefix=/soft/net-snmp-5.6.1.1 --enable-developer        
make && make install

echo /soft/net-snmp-5.6.1.1/lib > /etc/ld.so.conf      
ldconfig

cd ../

crontab -e      
# 沒分鐘採集一次數據 使用root採集. 一個比較操蛋的問題. 就是東西太多 多環境生成會出問題 權限設置又很麻煩 不如這麼來最實惠了.        
*/1 * * * * root /soft/php-5.4.6/bin/php /wwwroot/web/cacti/poller.php > /dev/null 2>&1 && /bin/chown www:www * /wwwroot/web/cacti/rra/*

# 使用二進制文件來進行數據採集 效率較高      
wget http://www.cacti.net/downloads/spine/cacti-spine-0.8.8a.tar.gz
tar zxf cacti-spine-0.8.8a.tar.gz        
cd cacti-spine-0.8.8a        
./configure --prefix=/soft/cacti-spine-0.8.8a --with-mysql=/soft/mysql-5.5.27/ --with-snmp=/soft/net-snmp-5.6.1.1/        
make && make install        
cd /soft/cacti-spine-0.8.8a/etc/        
mv spine.conf.dist spine.conf        
vi /soft/cacti-spine-0.8.8a/etc/spine.conf

# 安裝完成 以後      
http://ip/cacti/install

/soft/rrdtool-1.4.3/bin/rrdtool      
/soft/php-5.4.6/bin/php        
/soft/net-snmp-5.6.1.1/binsnmpwalk        
/soft/net-snmp-5.6.1.1/binsnmpget        
/soft/net-snmp-5.6.1.1/bin/snmpbulkwalk        
/soft/net-snmp-5.6.1.1/bin/snmpgetnext        
/soft/cacti-spine-0.8.8a/bin/spine

用戶名  密碼  均爲admin


# 若是繪圖出現亂碼 上傳一箇中文字體便可      
cp simsun.ttc /usr/share/fonts        
fc-cache -f -v

# 整合cacit和nagios      
wget http://sourceforge.net/projects/nagios/files/ndoutils-1.x/ndoutils-1.5.2/ndoutils-1.5.2.tar.gz/download
tar zxf ndoutils-1.5.2.tar.gz        
cd ndoutils-1.5.2        
ldconfig

./configure --prefix=/soft/ndoutils-1.5.2 --with-mysql=/soft/mysql-5.5.27/ --with-ndo2db-user=nagios --with-ndo2db-group=nagios

# include/config.h 修改261 262行      
#include </soft/mysql-5.5.27/include/mysql.h>        
#include </soft/mysql-5.5.27/include/errmsg.h>

make      
make install

須要安裝dbi 和 dbd      
-----------------------------------------        
wget http://search.cpan.org/CPAN/authors/id/M/MS/MSCHWERN/Test-Simple-0.98.tar.gz
wget http://search.cpan.org/CPAN/authors/id/T/TI/TIMB/DBI-1.622.tar.gz
wget http://search.cpan.org/CPAN/authors/id/C/CA/CAPTTOFU/DBD-mysql-4.022.tar.gz

tar zxf Test-Simple-0.98.tar.gz      
tar zxf DBI-1.622.tar.gz        
tar zxf DBD-mysql-4.022.tar.gz

cd Test-Simple-0.98      
perl Makefile.PL        
make        
make install        
cd ../

cd DBI-1.622      
perl Makefile.PL        
make        
make install        
cd ../

cd DBD-mysql-4.022      
perl Makefile.PL        
make        
make install        
cd ../        
----------------------------------------------

cd db      
./installdb -ucactiuser -pcactiuser -hlocalhost -d cacti

-------      
cp ../config/ndomod.cfg-sample /soft/nagios-3.4.1/etc/ndomod.cfg

vi /soft/nagios-3.4.1/etc/nagios.cfg        
check_external_commands=1        
command_check_interval=-1        
event_broker_options=-1        
broker_module=/soft/nagios-3.4.1/bin/ndomod-3x.o config_file=/soft/nagios-3.4.1/etc/ndomod.cfg        
process_performance_data=1        
--------

cd /root/ndoutils-1.5.2/src      
cp ndomod-3x.o ndo2db-3x log2ndo file2sock /soft/nagios-3.4.1/bin/        
cd ../config        
cp ndo2db.cfg-sample /soft/nagios-3.4.1/etc/ndo2db.cfg        
/soft/ndoutils-1.5.2/bin/ndo2db -c /soft/nagios-3.4.1/etc/ndo2db.cfg

mkdir -p /soft/ndoutils-1.5.2/var/

# selinux      
# http://wiki.centos.org/TipsAndTricks/SelinuxBooleans
# http://selinuxproject.org/page/NB_AL
chcon -R -t httpd_sys_content_t /soft/nagios-3.4.1/sbin/        
chcon -R -t httpd_sys_content_t /soft/nagios-3.4.1/share/

# 安裝npc 讓nagios在cacti顯示      
tar zxf npc-2.0.4.tar.gz        
cp -r npc /wwwroot/web/cacti/plugins/        
chown www:www -R /wwwroot/web/

# 解決npc不出圖的問題 進mysql cacti 數據庫進行刷庫      
ALTER TABLE npc_eventhandlers ADD long_output TEXT NOT NULL DEFAULT '' AFTER output;        
ALTER TABLE npc_hostchecks ADD long_output TEXT NOT NULL DEFAULT '' AFTER output;        
ALTER TABLE npc_hoststatus ADD long_output TEXT NOT NULL DEFAULT '' AFTER output;        
ALTER TABLE npc_notifications ADD long_output TEXT NOT NULL DEFAULT '' AFTER output;        
ALTER TABLE npc_servicechecks ADD long_output TEXT NOT NULL DEFAULT '' AFTER output;        
ALTER TABLE npc_servicestatus ADD long_output TEXT NOT NULL DEFAULT '' AFTER output;        
ALTER TABLE npc_statehistory ADD long_output TEXT NOT NULL DEFAULT '' AFTER output;        
ALTER TABLE npc_systemcommands ADD long_output TEXT NOT NULL DEFAULT '' AFTER output;

# 進入到軟件目錄      
chown nagios:nagios -R nagios-3.4.1/ ndoutils-1.5.2/

# 進入web進行插件設置

ndo2db 內核錯誤解釋      
# cat /proc/sys/kernel/msgmnb        
65536        
# cat /proc/sys/kernel/msgmax        
65536        
# cat /proc/sys/kernel/msgmni        
1985

# echo 131072 > /proc/sys/kernel/msgmnb      
and        
# vi /etc/sysctl.conf        
and adjust the appropriate value(s).        
Why did I do it:

Because of repeating error messages in /var/log/messages:      
360viewpoint ndo2db: 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 1985 messages and 65536 of 65536 bytes in the queue. See README for kernel tuning options.        
How did I know how to do this

Read the NDO-Utils README file:

************************      
TUNING KERNEL PARAMETERS        
************************

NDOUTILS uses a single message queue to communicate between the broker      
module and the NDO2DB daemon. Depending on the operating system, there        
may be parameters that need to be tuned in order for this communication        
to work correctly. The discussion below applies specifically to Linux,        
but may apply generally to other Unices as well.

There are three Linux kernel parameters that determine the resources      
provided to the messaging subsystem:        
       * kernel.msgmax is the maximum size of a single message in a        
               message queue        
       * kernel.msgmni is the maximum number of messages allowed in any        
               one message queue        
       * kernel.msgmnb is the total number of bytes allow in all messages        
               in any one message queue

To see the current values for any of these parameters, cat      
/proc/sys/kernel/msg{max|mni|mnb}.

In order for NDOUTILS to work at all, kernel.msgmax must be greater than      
the size of the queue_msg struct (currently 1026 bytes). Most Linux        
distributions set kernel.msgmax to a default of 65536.

If there are insufficient resources for sending messages between the      
broker and the daemon, you will see an entry similar to the following        
in your logs. (This is logged via the syslog facility, using the level        
LOG_ERR and the default facility.)

       ndo2db: 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 16 of 16        
       mesages and 65536 of 65536 bytes in the queue.  See README for        
       kernel tuning options.

If you see this entry, the message will likely eventually be sent,      
but retrying uses system resources, and there is the possibility that        
more messages will queued than can be handled, causing the broker        
module to stall.

If you are close to or have exceeded the number of messages, you may      
need to increase kernel.msgmni. If you are close to or have exceeded        
the number of bytes in the queue, you may need to increase        
kernel.msgmnb. In some cases you may need to increase both.

A conservative approach would be to double the necessary value, stop      
and restart both the NDO2DB daemon and Nagios Core, and watch for any        
further messages. Note that if NDO2DB is started after Nagios Core,        
you may see the warning above as the broker module first attempts to        
flush its backlog of messages.

To increase a value, echo the value to /proc/sys/kernel/msgmni or      
/proc/sys/kernel/msgmnb as appropriate.

For example, to increase the number of messages allowed in the queue      
to 32, use the command 'echo 32 > /proc/sys/kernel/msgmni' (without        
the quotes).

Once you have determine the correct parameters, you can make them       permanent by editing /etc/sysctl.conf. Add or update the line of        the form 'kernel.msg{mni|mnb} = <value>' with the value(s) determined        above. The next time the system is booted, the values of the        parameters in /etc/sysctl.conf will be loaded.

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息