在 Ubuntu 16.04 上安裝和使用服務器監控報警係統 Shinken
Shinken 是一個用 Python 實現的開源的主機和網絡監控框架,並與 Nagios like 兼容,它可以運行在所有支持 Python 程序的操作係統上,比如說 Linux、Unix 和 Windows。Shinken 是 Jean Gabes 為了驗證一個新的 Nagios 架構思路而編寫,但是這個想法被 Nagios 的作者拒絕後成為了一個獨立的網絡係統監視軟件,並保持了與 Nagios 的兼容。
在這篇教程中,我將會描述如何從源代碼編譯安裝 Shinken 和向監視係統中添加一台 Linux 主機。我將會以 Ubuntu 16.04 Xenial Xerus 操作係統來作為 Shinken 服務器和所監控的主機。
第一步 安裝 Shinken 服務器
Shinken 是一個 Python 框架,我們可以通過 pip
安裝或者從源碼來安裝它,在這一步中,我們將用源代碼編譯安裝 Shinken。
在我們開始安裝 Shinken 之前還需要完成幾個步驟。
安裝一些新的 Python 軟件包並創建一個名為 shinken
的係統用戶:
sudo apt-get install python-setuptools python-pip python-pycurl
useradd -m -s /bin/bash shinken
從 GitHub 倉庫下載 Shinken 源代碼:
git clone https://github.com/naparuba/shinken.git
cd shinken/
然後用以下命令安裝 Shinken:
git checkout 2.4.3
python setup.py install
然後,為了得到更好的效果,我們還需要從 Ubuntu 軟件庫中安裝 python-cherrypy3
軟件包:
sudo apt-get install python-cherrypy3
到這裏,Shinken 已經成功安裝,接下來我們將 Shinken 添加到係統啟動項並且啟動它:
update-rc.d shinken defaults
systemctl start shinken
第二步 安裝 Shinken Webui2
Webui2 是 Shinken 的 Web 界麵(在 shinken.io 可以找到)。最簡單的安裝 Shinken webui2 的方法是使用shinken CLI 命令(必須作為 shinken
用戶執行)。
切換到 shinken 用戶:
su - shinken
初始化 shiken 配置文件,下麵的命令將會創建一個新的配置文件 .shinken.ini
:
shinken --init
接下來用 shinken CLI 命令來安裝 webui2
:
shinken install webui2
至此 webui2 已經安裝好,但是我們還需要安裝 MongoDB 和用 pip
來安裝另一個 Python 軟件包。在 root 下運行如下命令:
sudo apt-get install mongodb
pip install pymongo>=3.0.3 requests arrow bottle==0.12.8
接下來,切換到 shinken 目錄下並且通過編輯 broker-master.cfg
文件來添加這個新的 webui2 模塊:
cd /etc/shinken/brokers/
vim broker-master.cfg
在第 40 行添加一個模塊選項:
modules webui2
保存文件並且退出編輯器。
現在進入 contacts
目錄下編輯 admin.cfg
來進行管理配置。
cd /etc/shinken/contacts/
vim admin.cfg
按照如下修改:
contact_name admin # Username 'admin'
password yourpass # Pass 'mypass'
保存和退出。
第三步 安裝 Nagios 插件和 Shinken 軟件包
在這一步中,我們將安裝 Nagios 插件和一些 Perl 模塊。然後從 shinken.io 安裝其他的軟件包來實現監視。
安裝 Nagios 插件和安裝 Perl 模塊所需要的 cpanminus
:
sudo apt-get install nagios-plugins* cpanminus
用 cpanm
命令來安裝 Perl 模塊。
cpanm Net::SNMP
cpanm Time::HiRes
cpanm DBI
現在我們創建一個 utils.pm
文件的鏈接到 shinken 的目錄,並且為 Log_File_Health
創建了一個新的日誌目錄 。
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
來監視 SSH 和 SNMP :
su - shinken
shinken install ssh
shinken install linux-snmp
第四步 添加一個 Linux 主機 host-one
我們將添加一個新的將被監控的 Linux 主機,IP 地址為 192.168.1.121,主機名為 host-one 的 Ubuntu 16.04。
連接到 host-one 主機:
ssh host1@192.168.1.121
從 Ubuntu 軟件庫中安裝 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
保存並退出。
現在用 systemctl
命令來啟動 snmpd
服務:
systemctl start snmpd
在 shinken 服務器上通過在 hosts
文件夾下創建新的文件來定義一個新的主機:
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 服務器上編輯 SNMP 配置文件。
vim /etc/shinken/resource.d/snmp.cfg
將 public
改為 mypass
-必須和你在客戶端 snmpd
配置文件中使用的密碼相同:
$SNMPCOMMUNITYREAD$=mypass
保存並退出。
現在將服務端和客戶端都重啟:
reboot
現在 Linux 主機已經被成功地添加到 shinken 服務器中了。
第五步 訪問 Shinken Webui2
在端口 7677 訪問 Shinken webui2 (將 URL 中的 IP 替換成你自己的 IP 地址):
http://192.168.1.120:7767
用管理員用戶和密碼登錄(你在 admin.cfg 文件中設置的)
Webui2 中的 Shinken 麵板:
我們的兩個服務器正在被 Shinken 監控:
列出所有被 linux-snmp 監控的服務:
所有主機和服務的狀態信息:
第6步 Shinken 的常見問題
NTP 服務器相關的問題
當你得到如下的 NTP 錯誤提示
TimeSync - CRITICAL ( NTP CRITICAL: No response from the NTP server)
TimeSync - CRITICAL ( NTP CRITICAL: Offset unknown )
為了解決這個問題,在所有 Linux 主機上安裝 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
然後,在新的一行添加如下限製規則:
# 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.
保存並退出。
啟動 ntp 並且檢查 Shinken 麵板。
ntpd
check_netint.pl Not Found 問題
從 github 倉庫下載源代碼到 shinken 的庫目錄下:
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
網絡占用的問題
這是錯誤信息:
ERROR : Unknown interface eth\d+
檢查你的網絡接口並且編輯 linux-snmp
模版。
在我的 Ununtu 服務器,網卡是 “enp0s8”,而不是 eth0,所以我遇到了這個錯誤。
vim
編輯 linux-snmp
模版:
vim /etc/shinken/packs/linux-snmp/templates.cfg
在第 24 行添加網絡接口信息:
_NET_IFACES eth\d+|em\d+|enp0s8
保存並退出。
原文發布時間為:2016-09-29
本文來自雲棲社區合作夥伴“Linux中國”
最後更新:2017-06-06 16:03:03