在Ubuntu 16.04上安裝和使用服務(wù)器監(jiān)控報(bào)警系統(tǒng)Shinken
Shinken 是一個(gè)用 Python 實(shí)現(xiàn)的開源的主機(jī)和網(wǎng)絡(luò)監(jiān)控框架,并與 Nagios like 兼容,它可以運(yùn)行在所有支持 Python 程序的操作系統(tǒng)上,比如說 Linux、Unix 和 Windows。Shinken 是 Jean Gabes 為了驗(yàn)證一個(gè)新的 Nagios 架構(gòu)思路而編寫,但是這個(gè)想法被 Nagios 的作者拒***成為了一個(gè)獨(dú)立的網(wǎng)絡(luò)系統(tǒng)監(jiān)視軟件,并保持了與 Nagios 的兼容。
在這篇教程中,我將會(huì)描述如何從源代碼編譯安裝 Shinken 和向監(jiān)視系統(tǒng)中添加一臺(tái) Linux 主機(jī)。我將會(huì)以 Ubuntu 16.04 Xenial Xerus 操作系統(tǒng)來作為 Shinken 服務(wù)器和所監(jiān)控的主機(jī)。
***步 安裝 Shinken 服務(wù)器
Shinken 是一個(gè) Python 框架,我們可以通過 pip 安裝或者從源碼來安裝它,在這一步中,我們將用源代碼編譯安裝 Shinken。
在我們開始安裝 Shinken 之前還需要完成幾個(gè)步驟。
安裝一些新的 Python 軟件包并創(chuàng)建一個(gè)名為 shinken 的系統(tǒng)用戶:
- sudo apt-get install python-setuptools python-pip python-pycurl
- useradd -m -s /bin/bash shinken
從 GitHub 倉(cāng)庫(kù)下載 Shinken 源代碼:
- git clone https://github.com/naparuba/shinken.git
- cd shinken/
然后用以下命令安裝 Shinken:
- git checkout 2.4.3
- python setup.py install
然后,為了得到更好的效果,我們還需要從 Ubuntu 軟件庫(kù)中安裝 python-cherrypy3 軟件包:
- sudo apt-get install python-cherrypy3
到這里,Shinken 已經(jīng)成功安裝,接下來我們將 Shinken 添加到系統(tǒng)啟動(dòng)項(xiàng)并且啟動(dòng)它:
- update-rc.d shinken defaults
- systemctl start shinken
第二步 安裝 Shinken Webui2
Webui2 是 Shinken 的 Web 界面(在 shinken.io 可以找到)。最簡(jiǎn)單的安裝 Shinken webui2 的方法是使用shinken CLI 命令(必須作為 shinken 用戶執(zhí)行)。
切換到 shinken 用戶:
- su - shinken
初始化 shiken 配置文件,下面的命令將會(huì)創(chuàng)建一個(gè)新的配置文件 .shinken.ini :
- shinken --init
接下來用 shinken CLI 命令來安裝 webui2:
- shinken install webui2
至此 webui2 已經(jīng)安裝好,但是我們還需要安裝 MongoDB 和用 pip 來安裝另一個(gè) Python 軟件包。在 root 下運(yùn)行如下命令:
- sudo apt-get install mongodb
- pip install pymongo>=3.0.3 requests arrow bottle==0.12.8
接下來,切換到 shinken 目錄下并且通過編輯 broker-master.cfg 文件來添加這個(gè)新的 webui2 模塊:
- cd /etc/shinken/brokers/
- vim broker-master.cfg
在第 40 行添加一個(gè)模塊選項(xiàng):
- modules webui2
保存文件并且退出編輯器。
現(xiàn)在進(jìn)入 contacts 目錄下編輯 admin.cfg 來進(jìn)行管理配置。
- cd /etc/shinken/contacts/
- vim admin.cfg
按照如下修改:
- contact_name admin # Username 'admin'
- password yourpass # Pass 'mypass'
保存和退出。
第三步 安裝 Nagios 插件和 Shinken 軟件包
在這一步中,我們將安裝 Nagios 插件和一些 Perl 模塊。然后從 shinken.io 安裝其他的軟件包來實(shí)現(xiàn)監(jiān)視。
安裝 Nagios 插件和安裝 Perl 模塊所需要的 cpanminus:
- sudo apt-get install nagios-plugins* cpanminus
用 cpanm 命令來安裝 Perl 模塊。
- cpanm Net::SNMP
- cpanm Time::HiRes
- cpanm DBI
現(xiàn)在我們創(chuàng)建一個(gè) utils.pm 文件的鏈接到 shinken 的目錄,并且為 Log_File_Health 創(chuàng)建了一個(gè)新的日志目錄 。
- chmod u+s /usr/lib/nagios/plugins/check_icmp
- ln -s /usr/lib/nagios/plugins/utils.pm /var/lib/shinken/libexec/
- mkdir -p /var/log/rhosts/
- touch /var/log/rhosts/remote-hosts.log
然后,從 shinken.io 安裝 shinken 軟件包 ssh 和 linux-snmp 來監(jiān)視 SSH 和 SNMP :
- su - shinken
- shinken install ssh
- shinken install linux-snmp
第四步 添加一個(gè) Linux 主機(jī) host-one
我們將添加一個(gè)新的將被監(jiān)控的 Linux 主機(jī),IP 地址為 192.168.1.121,主機(jī)名為 host-one 的 Ubuntu 16.04。
連接到 host-one 主機(jī):
- ssh host1@192.168.1.121
從 Ubuntu 軟件庫(kù)中安裝 snmp 和snmpd 軟件包:
- sudo apt-get install snmp snmpd
然后,用 vim 編輯 snmpd.conf 配置文件:
- vim /etc/snmp/snmpd.conf
注釋掉第 15 行并取消注釋第 17 行:
- #agentAddress udp:127.0.0.1:161
- agentAddress udp:161,udp6:[::1]:161
注釋掉第 51 和 53 行,然后加一行新的配置,如下:
- #rocommunity mypass default -V systemonly
- #rocommunity6 mypass default -V systemonly
- rocommunity mypass
保存并退出。
現(xiàn)在用 systemctl 命令來啟動(dòng) snmpd 服務(wù):
- systemctl start snmpd
在 shinken 服務(wù)器上通過在 hosts 文件夾下創(chuàng)建新的文件來定義一個(gè)新的主機(jī):
- cd /etc/shinken/hosts/
- vim host-one.cfg
粘貼如下配置信息:
- define host{
- use generic-host,linux-snmp,ssh
- contact_groups admins
- host_name host-one
- address 192.168.1.121
- _SNMPCOMMUNITY mypass # SNMP Pass Config on snmpd.conf
- }
保存并退出。
在 shinken 服務(wù)器上編輯 SNMP 配置文件。
- vim /etc/shinken/resource.d/snmp.cfg
將 public 改為 mypass -必須和你在客戶端 snmpd 配置文件中使用的密碼相同:
- $SNMPCOMMUNITYREAD$=mypass
保存并退出。
現(xiàn)在將服務(wù)端和客戶端都重啟:
- reboot
現(xiàn)在 Linux 主機(jī)已經(jīng)被成功地添加到 shinken 服務(wù)器中了。
第五步 訪問 Shinken Webui2
在端口 7677 訪問 Shinken webui2 (將 URL 中的 IP 替換成你自己的 IP 地址):
- http://192.168.1.120:7767
用管理員用戶和密碼登錄(你在 admin.cfg 文件中設(shè)置的)
Webui2 中的 Shinken 面板:
我們的兩個(gè)服務(wù)器正在被 Shinken 監(jiān)控:
列出所有被 linux-snmp 監(jiān)控的服務(wù):
所有主機(jī)和服務(wù)的狀態(tài)信息:
第6步 Shinken 的常見問題
NTP 服務(wù)器相關(guān)的問題
當(dāng)你得到如下的 NTP 錯(cuò)誤提示
- TimeSync - CRITICAL ( NTP CRITICAL: No response from the NTP server)
- TimeSync - CRITICAL ( NTP CRITICAL: Offset unknown )
為了解決這個(gè)問題,在所有 Linux 主機(jī)上安裝 ntp。
- sudo apt-get install ntp ntpdate
編輯 ntp 配置文件:
- vim /etc/ntp.conf
注釋掉所有 pools 并替換為:
- #pool 0.ubuntu.pool.ntp.org iburst
- #pool 1.ubuntu.pool.ntp.org iburst
- #pool 2.ubuntu.pool.ntp.org iburst
- #pool 3.ubuntu.pool.ntp.org iburst
- pool 0.id.pool.ntp.org
- pool 1.asia.pool.ntp.org
- pool 0.asia.pool.ntp.org
然后,在新的一行添加如下限制規(guī)則:
- # Local users may interrogate the ntp server more closely.
- restrict 127.0.0.1
- restrict 192.168.1.120 #shinken server IP address
- restrict ::1
- NOTE: 192.168.1.120 is the Shinken server IP address.
保存并退出。
啟動(dòng) ntp 并且檢查 Shinken 面板。
- ntpd
check_netint.pl Not Found 問題
從 github 倉(cāng)庫(kù)下載源代碼到 shinken 的庫(kù)目錄下:
- cd /var/lib/shinken/libexec/
- wget https://raw.githubusercontent.com/Sysnove/shinken-plugins/master/check_netint.pl
- chmod +x check_netint.pl
- chown shinken:shinken check_netint.pl
網(wǎng)絡(luò)占用的問題
這是錯(cuò)誤信息:
- ERROR : Unknown interface eth\d+
檢查你的網(wǎng)絡(luò)接口并且編輯 linux-snmp 模版。
在我的 Ununtu 服務(wù)器,網(wǎng)卡是 “enp0s8”,而不是 eth0,所以我遇到了這個(gè)錯(cuò)誤。
vim 編輯 linux-snmp 模版:
- vim /etc/shinken/packs/linux-snmp/templates.cfg
在第 24 行添加網(wǎng)絡(luò)接口信息:
- _NET_IFACES eth\d+|em\d+|enp0s8
保存并退出。