Nagios 可以自動做多台主機的檢查、通知... 等等,於一個介面統一控管、查詢使用,也有歷史資料可以查詢。
Nagios 除了內建常用的外,有缺少需要的可以自己寫,或者是找此處有更多寫好的可以直接下載安裝使用:
Plugins - Nagios Exchange # extension 監控 script 不夠用, 可以從這邊找
Ex:
- check_phpfpm_status.pl - Nagios Exchange
- check_fastcgi.pl - Nagios Exchange
- check_nginx_status.pl - Nagios Exchange
- regilero/check_nginx_status
Nagios 安裝設定 於 Debian、Ubuntu Linux
Nagios 的 Server、Client 的角色常常會互換,因為監控的部分,可以是 Server 自己去 Client 要資料,也可以是 Client 送資料到 Server 來, 這部分常常會搞得有點混亂,所以在此統一定義:
- Server:Nagios 監控主機(含 Nagios Web 這台) - 下述的 server# 都指這台
- Client:各台要被監控的主機 - 下述的 client# 都指這台 * n
- 註: Nagios 會透過 nrpe 來互傳資料
基本資料
- Server IP: 123.123.123.123 / 內部IP: 192.168.1.1 (Monitor Server)
- Client IP: 192.168.1.100 # 盡量使用內部IP,外部IP 會需要搭配 iptables
- Nagios 帳號 / 密碼: nagiosadmin / nagiospassword
Nagios Server 安裝、設定
- server# sudo apt-get install nagios3 nagios-nrpe-plugin
- 中途會建立 nagiosadmin 所需要的密碼,請輸入自己的密碼,依照上述設定是採用:
- nagiospassword # 會建立於 /etc/nagios3/htpasswd.users
- /etc/nagios3/conf.d/*
- generic-host_nagios2.cfg : 主機的檢查, 設定哪些要啟動
- generic-service_nagios2.cfg : 服務檢查, 設定 service 規則哪些要啟用/停用
- contacts_nagios2.cfg : 出事要聯絡誰? Email 給誰?
- hostgroups_nagios2.cfg : 設定 hostgroup, ex: debian server / http / ssh, 有哪些 member.. 等.
- services_nagios2.cfg : check 哪些 service 正常運作, 所有機器都需要的, 要啟用哪些規則.
- extinfo_nagios2.cfg : 系統資訊
- localhost_nagios2.cfg : 設定要檢測的項目, 到哪邊需要警告... 等等, ex: hd usage, load, process ...
- timeperiods_nagios2.cfg : 時間與名稱對應
- 以上這些都要初始化要設定的主要是 generic-service_nagios2.cfg 和 nagios.cfg 這兩個檔案。
- 後續要增加機器持續修改的,會是 localhost_nagios2.cfg 這個檔案不斷複製修改。
- Nagios 有哪些預設設定檔可以參考使用,可見: /etc/nagios-plugins/config/
- Nagios 檢測套件程式可見: /usr/lib/nagios/plugins/
- server# vim /etc/nagios3/conf.d/generic-service_nagios2.cfg
- notifications_enabled: 要不要通知
- max_check_attempts: 重試幾次才通知? 還是 每次 failed 就立刻通知
- notification_period: 通知的時間要7*24, 還是只要上班時間就好
- normal_check_interval: 每次檢查的時間間隔要多久
- contact_groups: 有問題要 Email 給誰
- server# vim /etc/nagios3/nagios.cfg
- check_external_commands=0 # 改成1
- check_external_commands=1
- #dont_blame_nrpe=0 # 改成1, 允許丟參數進來
- dont_blame_nrpe=1
- 新增監控機器 * n
- server# sudo cp localhost_nagios2.cfg www.cfg # www.cfg 可自行取機器名字,ex: f1、f2、db1.. 等等.
- 將 host_name 後面的值都換成 www_hostname
- 將 address 後面的值換成 www_hostname 的 IP
- /etc/init.d/nagios3 restart
Nagios Client 安裝、設定
Nagios 要被監控的主機 Client 部分的安裝設定如下:(這邊採用 Client 設定分別寫死監控數字,Server 純粹呼叫即可得到結果,不需傳參數進來的方式)
- client# apt-get install nagios-nrpe-server nagios-plugins
- vim /etc/nagios/nrpe.cfg
- allowed_hosts=127.0.0.1 # 加上 monitor server ip
- allowed_hosts=127.0.0.1,192.168.1.1 # 加上 monitor server ip
- #server_address=127.0.0.1
- server_address=192.168.1.100 # 改成自己的內部 IP,這樣子就不用開放外部Port都可以看到, 比較安全
- 下面這些看有哪些要 check 的, 用這些語法去檢查.
- #command[check_hda1]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/hda1
- command[check_root]=/usr/lib/nagios/plugins/check_disk -w 20% -c 10% -p /dev/disk/by-uuid/6a9b5d9c-c46d-4fbb-aae4-9a54a0ab0b96
- #command[...] .. 這些 可以寫成 /etc/nagios/nrpe.d/nginx.cfg # check nginx.. 等等另外處理
- # 這些 [] 裡面對應的是 server# 設定裡面的 check_command check_nrpe!check_root!20%!10%
- sudo /etc/init.d/nagios-nrpe-server restart
此時就可以到 http://123.123.123.123/nagios3/ , 用 nagiosadmin / nagiospassword 登入了.
註: 上述設定的 check_nrpe 是什麼東西? 詳細可見下述:
- server# vim /etc/nagios-plugins/config/check_nrpe.cfg
- server# vim /etc/nagios3/commands.cfg # Email 那些都是怎麼執行的,可見此設定
nrpe 手動執行檢查方式
- ./check_nrpe -H 192.168.1.100 -c check_nginx_status # 註: nginx 需要另外安裝
- /usr/lib/nagios/plugins/check_nrpe -H 192.168.1.100 -c check_procs -a 250 400
- /usr/lib/nagios/plugins/check_nrpe -H 192.168.1.100 -c check_nginx_status -a localhost /nginx_status localhost 8 10000,100,200 20000,200,300
後續陸續增加 Nagios Client 方式
- ssh server
- server# cp /etc/nagios3/conf.d/localhost_nagios2.cfg /etc/nagios3/conf.d/web1.cfg
- vim /etc/nagios3/conf.d/web1.cfg # 修改 host_name, alias, address.. 等等
- sudo /etc/init.d/nagios3 restart
- ssh client
- client# apt-get install nagios-nrpe-server nagios-plugins # 套件安裝
- ifconfig # 記下 192.168.1.x 的 IP
- vim /etc/nagios/nrpe.cfg
- #server_address=127.0.0.1 改成
- server_address=192.168.1.100
- allowed_hosts=127.0.0.1 加上
- allowed_hosts=127.0.0.1,192.168.1.1
- #dont_blame_nrpe=0 # 允許外部參數
- dont_blame_nrpe=1
- sudo /etc/init.d/nagios-nrpe-server restart
- vim /etc/nagios/nrpe.cfg # 修改設定值
- #command[check_total_procs]=/usr/lib/nagios/plugins/check_procs -w 150 -c 200 # 改成
- command[check_total_procs]=/usr/lib/nagios/plugins/check_procs -w 250 -c 400
- #command[check_disk]=/usr/lib/nagios/plugins/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$ # 改成
- command[check_disk]=/usr/lib/nagios/plugins/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
- sudo /etc/init.d/nagios-nrpe-server restart
相關問題
Q1: 關於安全性問題,沒有內部IP,想要只允許 Monitor Server 可以存取此 Port,下述作法可以參考看看:
- 詳見: How To Install Nagios On CentOS 6 | DigitalOcean (下述IP 已經換成 Monitor Server 對外的 IP)
- iptables -N NRPE
- iptables -I INPUT -s 0/0 -p tcp --dport 5666 -j NRPE
- iptables -I NRPE -s 123.123.123.123 -j ACCEPT
- iptables -A NRPE -s 0/0 -j DROP
- /etc/init.d/iptables save
- 詳見: Configure iptables to Allow Access to Common Services on Linux - Bonus Bits Wiki (下述IP 已經換成 Monitor Server 對外的 IP)
- Allow Nagios NRPE Client Access from Nagios Server (TCP Port 5666)
- iptables -A INPUT -s 123.123.123.123 -p tcp -m tcp --dport 5666 -m state --state NEW,ESTABLISHED -j ACCEPT
Q2: 若 SSH port 有修改, 要如何修改設定? (假設 SSH Port 由 22 改成 2222)
- 檢測 SSH port 是否通的程式是: /usr/lib/nagios/plugins/check_ssh, 操作方式如下:
- /usr/lib/nagios/plugins/check_ssh localhost
- /usr/lib/nagios/plugins/check_ssh -p 2222 localhost
- vim /etc/nagios3/conf.d/services_nagios2.cfg
# check that ssh 222 port services are running define service { hostgroup_name ssh2-servers service_description SSH2 check_command check_ssh_port!2222!server use generic-service notification_interval 0 ; set > 0 if you want to be renotified }
- sudo vim hostgroups_nagios2.cfg # 需增加 hostgroup 對應上面的 hostgroup_name
# A list of your ssh-accessible servers define hostgroup { hostgroup_name ssh2-servers alias SSH2 servers members localhost }
- 可參考此篇: linux - Monitor ssh on non-default port with Nagios - Server Fault
Q3: 出現 CHECK_NRPE: Error - Could not complete SSL handshake 的問題,該怎麼解決?
- Client# vim /etc/nagios/nrpe.cfg # 修改下述
- #server_address=127.0.0.1 改成 Client 對外IP
- server_address=192.168.1.100
- allowed_hosts=127.0.0.1 加上查詢 Server 的 IP
- allowed_hosts=127.0.0.1,123.123.123.123
- sudo /etc/init.d/nagios-nrpe-server restart
相關網頁
- Install And Configure Nagios on Ubuntu 14.04 LTS | Unixmen
- Nagios系統監看工具安裝教學 - 推薦此篇
- 第二十四個夏天後: [Linux] 使用 Nagios 和 nagios-nrpe-server 定期偵測系統狀況 - 推薦
- nagios總結與基本配置模板-V2
- 回報伺服器掛了沒 -- nagios外掛(NRPE)
- 回報伺服器掛了沒 -- nagios後續設定
- How to install and configure nagios nrpe in CentOS and Red Hat
- check_nrpe!check_load command failed - View topic • Nagios Support Forum
- check_nrpe!check_load!-a '-w 15,10,5 -c 30,20,10'
- Perl/Nagios – Can’t locate utils.pm in @INC - check php-fpm 有問題,修改方式如下:
- vim /usr/lib/nagios/plugins/check_phpfpm_status.pl
- #use lib "/usr/local/nagios/libexec";
- use lib "/usr/lib/nagios/plugins";
- vim /usr/lib/nagios/plugins/check_phpfpm_status.pl
- Linux下Nagios的安裝與配置
- nagios全攻略(一)----準備階段
- nagios全攻略(三)----使用插件監控更多信息
- Wiki: Setting Nagios
- Nagios系統監看工具安裝教學 - Linux & Freebsd
- Superviser PHP-FPM avec Nagios ou Shinken - Le blog de NicoLargo
- sudo cp check_nginx_status.pl check_phpfpm_status.pl /usr/lib/nagios/plugins/
- System Monitoring Via SNMP and Nagios
- Nagios Installation and Configuration - Debian Clusters
- Installing Nagios On Debian Lenny And Monitoring A Debian Lenny Server
- Debian 7 install Nagios - Knowledge
- Debian -- Details of package nagios-plugins in wheezy
- Installing The Nagios Ubuntu and Debian Linux Agent - Nagios Library
- Ubuntu Quickstart
- Monitoring Linux/Unix Machines - nrpe 架構圖