支援全平臺的伺服器監控報警系統 Shinken

大雄45發表於2023-01-22
導讀 Shinken 是一個用 Python 實現的開源的主機和網路監控框架,並與 Nagios like 相容,它可以執行在所有支援 Python 程式的作業系統上,比如說  、Unix 和 Windows。Shinken 是 Jean Gabes 為了驗證一個新的 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 
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

支援全平臺的伺服器監控報警系統 Shinken支援全平臺的伺服器監控報警系統 Shinken

至此 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 檔案中設定的)

支援全平臺的伺服器監控報警系統 Shinken支援全平臺的伺服器監控報警系統 Shinken

Webui2 中的 Shinken 皮膚:
支援全平臺的伺服器監控報警系統 Shinken支援全平臺的伺服器監控報警系統 Shinken

我們的兩個伺服器正在被 Shinken 監控:
支援全平臺的伺服器監控報警系統 Shinken支援全平臺的伺服器監控報警系統 Shinken

列出所有被 linux-snmp 監控的服務:
支援全平臺的伺服器監控報警系統 Shinken支援全平臺的伺服器監控報警系統 Shinken

所有主機和服務的狀態資訊:
支援全平臺的伺服器監控報警系統 Shinken支援全平臺的伺服器監控報警系統 Shinken

第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 
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

儲存並退出。

原文來自:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2931966/,如需轉載,請註明出處,否則將追究法律責任。

相關文章