Nagios是一款開源的免費網絡監視工具,能有效監控Windows、Linux和Unix的主機狀態,交換機路由器等網絡設置,打印機等。在系統或服務狀態異常時發出郵件或短信報警第一時間通知網站運維人員,在狀態恢復後發出正常的郵件或短信通知。Nagios可運行在Linux/Unix平臺之上,同時提供一個可選的基於瀏覽器的WEB界面以方便系統管理人員查看網絡狀態,各種系統問題,以及日誌等等。
Nagios的功能是監控服務和主機,但是他自身並不包括這部分功能,所有的監控、檢測功能都是通過各種插件來完成的。
啓動Nagios後,它會週期性的自動調用插件去檢測服務器狀態,同時Nagios會維持一個隊列,所有插件返回來的狀態信息都進入隊列,Nagios每次都從隊首開始讀取信息,並進行處理後,把狀態結果通過web顯示出來。
Nagios提供了許多插件,利用這些插件可以方便的監控很多服務狀態。安裝完成後,在nagios主目錄下的/libexec裏放有 nagios自帶的可以使用的所有插件,如,check_disk是檢查磁盤空間的插件,check_load是檢查CPU負載的,等等。每一個插件可以 通過運行./check_xxx –h 來查看其使用方法和功能。
Nagios可以識別4種狀態返回信息,即 0(OK)表示狀態正常/綠色、1(WARNING)表示出現警告/黃色、2(CRITICAL)表示出現非常嚴重的錯誤/紅色、3(UNKNOWN)表 示未知錯誤/深黃色。Nagios根據插件返回來的值,來判斷監控對象的狀態,並通過web顯示出來,以供管理員及時發現故障。
nagios-plugins是nagios官方提供的一套插件程序,nagios監控主機的功能其實都是通過執行插件程序來實現的。
nagios.cfg Nagios 主配置文件
resource.cfg 變量定義文件,又稱爲資源文件,在些文件中定義變量,以便由其他配置文件引用,如$USER1$
objects objects 是一個目錄,在此目錄下有很多配置文件模板,用於定義Nagios 對象
objects/commands.cfg 命令定義配置文件,其中定義的命令可以被其他配置文件引用
objects/contacts.cfg 定義聯繫人和聯繫人組的配置文件
objects/localhost.cfg 定義監控本地主機的配置文件
objects/templates.cfg 定義主機和服務的一個模板配置文件,可以在其他配置文件中引用
objects/timeperiods.cfg 定義Nagios 監控時間段的配置文件
監控主機:172.25.85.2 server2.example.com
被監控主機:172.25.85.3 server3.example.com
server2:
添加用戶:
tar jxf nagios-cn-3.2.3.tar.bz2
yum install gd-devel-2.0.35-11.el6.x86_63.rpm
groupadd nagcmd
useradd -M -d /usr/local/nagios -G nagcmd nagios (-M 不指定用戶家目錄 -m指定用戶家目錄)
usermod -G nagcmd apache ##添加nagcmd用戶組,用以通過web頁面提交外部控制命令
cd nagios-cn-3.2.0
./configure --with-command-group=nagcmd
make all
make install
make install-init
make install-commandmode
make install-config
make install-webconf ##安裝web配置文件
vim /etc/httpd/conf.d/nagios.conf
cat /usr/local/nagios/etc/htpasswd.users
nagiosadmin:gCWSDnqEHR45c
htpasswd /usr/local/nagios/etc/htpasswd.users nagiosadmin
##(htpasswd 用於創建和更新儲存用戶名,和用於用戶密碼認證)
cat /usr/local/nagios/etc/htpasswd.users
nagiosadmin:AYGVkVYuX2mDs
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg ##檢查配置文件
/etc/init.d/httpd start
/etc/init.d/nagios start
http://172.25.85.2/nagios/
2. server2:
安裝nagios-plugins
tar zxf nagios-plugins-1.4.14.tar.gz
cd nagios-plugins-1.4.14
yum install mysql-devel openssl-devel
./configure
make
make install
cd /usr/local/nagios/libexec
chown nagios.nagios * -R
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
/etc/init.d/nagios reload
http://172.25.85.2/nagios/
3.server2:
修改配置文件:
vim /usr/local/nagios/etc/nagios.cfg
##註銷掉cfg_file= 這一行
cd /usr/local/nagios/etc/objects
cp localhost.cfg hosts.cfg -p
vim hosts.cfg
define host{ use linux-server host_name server2.example.com alias Manager # parents MainSwitch address 172.25.85.2 icon_p_w_picpath server.gif statusmap_p_w_picpath server.gd2 2d_coords 500,200 3d_coords 500,200,100 } # HOST GROUP DEFINITION ############################################################################### # Define an optional hostgroup for Linux machines define hostgroup{ hostgroup_name linux-servers ; The name of the hostgroup alias Linux Servers ; Long name of the group members * ; Comma separated list of hosts that belong to this group }
cp localhost.cfg services.cfg
chown nagios.nagios services.cfg
vim services.cfg
define servicegroup{ servicegroup_name 系統負荷檢查 alias 負荷檢查 members server2.example.com,進程總數,server2.example.com,登錄用戶數,server2.example.com,根分區,server2.example.com,交換空間利用率 } define service{ use local-service ; Name of service template to use host_name * service_description PING check_command check_ping!100.0,20%!500.0,60% } define service{ use local-service ; Name of service template to use host_name server2.example.com service_description 根分區 check_command check_local_disk!20%!10%!/ } define service{ use local-service ; Name of service template to use host_name server2.example.com service_description 登錄用戶數 check_command check_local_users!20!50 } define service{ use local-service ; Name of service template to use host_name server2.example.com service_description 進程總數 check_command check_local_procs!250!400!RSZDT } define service{ use local-service ; Name of service template to use host_name server2.example.com service_description 系統負荷 check_command check_local_load!5.0,4.0,3.0!10.0,6.0,4.0 } define service{ use local-service ; Name of service template to use host_name server2.example.com service_description 交換空間利用率 check_command check_local_swap!20!10 } define service{ use local-service ; Name of service template to use host_name server2.example.com service_description SSH check_command check_tcp!22!1.0!10.0 notifications_enabled 0 } define service{ use local-service ; Name of service template to use host_name server2.example.com service_description HTTP check_command check_http notifications_enabled 0 }
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
/etc/init.d/nagios reload
172.25.85.2/nagios/
server2:
cd /usr/local/nagios/libexec
./check_disk -w 20 -c 10
./check_disk -w 20 -c 10 -p /
cd /usr/local/nagios/etc/objects
vim services.cfg
在定義根分區最後加入:
max_check_attempts 2
4. server3:
yum install mysql-server -y
/etc/init.d/mysqld start
mysql_secure_installation
mysql -p
mysql> create database nagdb; mysql> grant select on nagdb.* to nagios@'172.25.85.2' identified by "redhat";
server2:
cd /usr/local/nagios/libexec
./check_mysql -H 172.25.85.3 -u nagios -p redhat
mysql -h 172.25.85.3 -u nagios -predhat ##可以登陸
server3:
/etc/init.d/mysqld stop
server2:
mysql -h 172.25.85.3 -u nagios -predhat
server2:
cd /usr/local/nagios/etc/objects
vim commands.cfg
define command{ command_name check_mysql command_line $USER1$/check_mysql -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ }
最後一行加上:
define service{ use local-service ; Name of service template to use host_name server3.example.com service_description MYSQL check_command check_mysql!nagios!redhat notifications_enabled 0 }
vim hosts.cfg
添加一個host
define host{ use linux-server host_name server3.example.com alias Manager # parents MainSwitch address 172.25.85.3 icon_p_w_picpath server.gif statusmap_p_w_picpath server.gd2 2d_coords 400,100 3d_coords 400,100,100 }
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
/etc/init.d/nagios reload
http://172.25.85.2:/nagios/
5. server3:
tar zxf nrpe-2.15.tar.gz
tar zxf nagios-plugins-2.1.1.tar.gz
useradd -M -d /usr/local/nagios nagios
cd /root/nagios-plugins-2.1.1
yum install openssl-devel xinetd -y
./configure
make
make install
cd /usr/local/nagios/
chown nagios.nagios . -R
cd /root/nrpe-2.15
./configure
make all
make install-plugin
make install-daemon
make install-daemon-config
make install-xinetd
cd /etc/xinetd.d/
vim nrpe
修改:
only_from = 172.25.85.2 ##監控主機
vim /etc/services
在最後添加:
nrpe 5666/tcp
vim /usr/local/nagios/etc/nrpe.cfg
allowed_hosts=172.25.85.2
/etc/init.d/xinetd start
cd /usr/local/nagios/libexec/
scp check_nrpe [email protected]:/usr/local/nagios/libexec/
server2:
cd /usr/local/nagios/libexec/
chown nagios.nagios check_nrpe
./check_nrpe -H 172.25.85.3 ##檢測nrpe是否可用成功顯示nrpe版本號 ./check_nrpe -H 172.25.85.3 -c check_disk
cd /usr/local/nagios/etc/objects
vim commands.cfg
define command{ command_name check_nrpe command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ }
添加在mysql後面:
define service{ use local-service ; Name of service template to use host_name server3.example.com service_description 根分區 check_command check_nrpe!check_disk } define service{ use local-service ; Name of service template to use host_name server3.example.com service_description 登陸用戶數 check_command check_nrpe!check_users }
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
/etc/init.d/nagios reload
http://172.25.85.2:/nagios/
6. 虛擬機聯網:
網橋方式:適合寬帶網絡
server2:
yum install mail -y
ip addr add 172.25.254.185/24 dev eth1
ip route show
route -n
cat /etc/resolv.conf
nameserver 192.168.11.182
物理機:
ip addr show
NAT方式:適合無線
先將虛擬機的ip 改爲動態分配 ##server2和server3都要修改
然後修改虛擬機的虛擬網絡接口爲NAT方式
重啓虛擬機
注意:
[重啓虛擬機後兩臺虛擬機的ip 會變化,之前所作的和ip 相關的操作需要重新做。
重啓之後:server2 172.25.85.2 變成了 192.168.122.196
server3 172.25.85.3 變成了 192.168.122.202]
server2:
vim /usr/local/nagios/etc/objects/contacts.cfg
vim /usr/local/nagios/etc/objects/templates.cfg ##186行
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
/etc/init.d/nagios reload
su - nagios ##試着給qq郵箱發送郵件,看虛擬機通網了沒
登錄郵箱設置白名單:[email protected]
檢測:
server3:
/etc/init.d/mysqld stop
172.25.85.2/nagios/
7.110雲告警: ##步驟可參考官網
登陸one!ert->配置-> 選擇配置類
生成了一個key
配置->通知策略->
關閉server3上的mysqld
server2:
cd /usr/local/nagios
tar zxf alert-agent-4.1.3.1-linux-x64.tar.gz -C /usr/local/nagios/libexec
su - nagios
-bash-4.1$ cd /usr/local/nagios/libexec/alert-agent
-bash-4.1$ cd nagios-plugin/
-bash-4.1$ cp nagios /usr/local/nagios/libexec/
-bash-4.1$ cp 110monitor.cfg /usr/local/nagios/etc/objects/
cd /usr/local/nagios/etc/objects
vim contacts.cfg
vim /usr/local/nagios/etc/nagios.cfg
date_format=iso8601
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
/etc/init.d/nagios reload
告警:
cd /usr/local/nagios/var
tail -f nagios.log