閱讀863 返回首頁    go 阿裏雲 go 技術社區[雲棲]


在 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 的係統用戶:


  1. sudo apt-get install python-setuptools python-pip python-pycurl
  2. useradd -m -s /bin/bash shinken

從 GitHub 倉庫下載 Shinken 源代碼:


  1. git clone https://github.com/naparuba/shinken.git
  2. cd shinken/

然後用以下命令安裝 Shinken:


  1. git checkout 2.4.3
  2. python setup.py install

然後,為了得到更好的效果,我們還需要從 Ubuntu 軟件庫中安裝 python-cherrypy3 軟件包:


  1. sudo apt-get install python-cherrypy3

到這裏,Shinken 已經成功安裝,接下來我們將 Shinken 添加到係統啟動項並且啟動它:


  1. update-rc.d shinken defaults
  2. systemctl start shinken

第二步 安裝 Shinken Webui2

Webui2 是 Shinken 的 Web 界麵(在 shinken.io 可以找到)。最簡單的安裝 Shinken webui2 的方法是使用shinken CLI 命令(必須作為 shinken 用戶執行)。

切換到 shinken 用戶:


  1. su - shinken

初始化 shiken 配置文件,下麵的命令將會創建一個新的配置文件 .shinken.ini :


  1. shinken --init

接下來用 shinken CLI 命令來安裝 webui2


  1. shinken install webui2

至此 webui2 已經安裝好,但是我們還需要安裝 MongoDB 和用 pip 來安裝另一個 Python 軟件包。在 root 下運行如下命令:


  1. sudo apt-get install mongodb
  2. pip install pymongo>=3.0.3 requests arrow bottle==0.12.8

接下來,切換到 shinken 目錄下並且通過編輯 broker-master.cfg 文件來添加這個新的 webui2 模塊:


  1. cd /etc/shinken/brokers/
  2. vim broker-master.cfg

在第 40 行添加一個模塊選項:


  1. modules webui2

保存文件並且退出編輯器。

現在進入 contacts 目錄下編輯 admin.cfg 來進行管理配置。


  1. cd /etc/shinken/contacts/
  2. vim admin.cfg

按照如下修改:


  1. contact_name admin # Username 'admin'
  2. password yourpass # Pass 'mypass'

保存和退出。

第三步 安裝 Nagios 插件和 Shinken 軟件包

在這一步中,我們將安裝 Nagios 插件和一些 Perl 模塊。然後從 shinken.io 安裝其他的軟件包來實現監視。

安裝 Nagios 插件和安裝 Perl 模塊所需要的 cpanminus


  1. sudo apt-get install nagios-plugins* cpanminus

用 cpanm 命令來安裝 Perl 模塊。


  1. cpanm Net::SNMP
  2. cpanm Time::HiRes
  3. cpanm DBI

現在我們創建一個 utils.pm 文件的鏈接到 shinken 的目錄,並且為 Log_File_Health 創建了一個新的日誌目錄 。


  1. chmod u+s /usr/lib/nagios/plugins/check_icmp
  2. ln -s /usr/lib/nagios/plugins/utils.pm /var/lib/shinken/libexec/
  3. mkdir -p /var/log/rhosts/
  4. touch /var/log/rhosts/remote-hosts.log

然後,從 shinken.io 安裝 shinken 軟件包 ssh 和 linux-snmp 來監視 SSH 和 SNMP :


  1. su - shinken
  2. shinken install ssh
  3. shinken install linux-snmp

第四步 添加一個 Linux 主機 host-one

我們將添加一個新的將被監控的 Linux 主機,IP 地址為 192.168.1.121,主機名為 host-one 的 Ubuntu 16.04。

連接到 host-one 主機:


  1. ssh host1@192.168.1.121

從 Ubuntu 軟件庫中安裝 snmp 和snmpd 軟件包:


  1. sudo apt-get install snmp snmpd

然後,用 vim 編輯 snmpd.conf 配置文件:


  1. vim /etc/snmp/snmpd.conf

注釋掉第 15 行並取消注釋第 17 行:


  1. #agentAddress udp:127.0.0.1:161
  2. agentAddress udp:161,udp6:[::1]:161

注釋掉第 51 和 53 行,然後加一行新的配置,如下:


  1. #rocommunity mypass default -V systemonly
  2. #rocommunity6 mypass default -V systemonly
  3. rocommunity mypass

保存並退出。

現在用 systemctl 命令來啟動 snmpd 服務:


  1. systemctl start snmpd

在 shinken 服務器上通過在 hosts 文件夾下創建新的文件來定義一個新的主機:


  1. cd /etc/shinken/hosts/
  2. vim host-one.cfg

粘貼如下配置信息:


  1. define host{
  2. use generic-host,linux-snmp,ssh
  3. contact_groups admins
  4. host_name host-one
  5. address 192.168.1.121
  6. _SNMPCOMMUNITY mypass # SNMP Pass Config on snmpd.conf
  7. }

保存並退出。

在 shinken 服務器上編輯 SNMP 配置文件。


  1. vim /etc/shinken/resource.d/snmp.cfg

將 public 改為 mypass -必須和你在客戶端 snmpd 配置文件中使用的密碼相同:


  1. $SNMPCOMMUNITYREAD$=mypass

保存並退出。

現在將服務端和客戶端都重啟:


  1. reboot

現在 Linux 主機已經被成功地添加到 shinken 服務器中了。

第五步 訪問 Shinken Webui2

在端口 7677 訪問 Shinken webui2 (將 URL 中的 IP 替換成你自己的 IP 地址):


  1. http://192.168.1.120:7767

用管理員用戶和密碼登錄(你在 admin.cfg 文件中設置的)

Webui2 中的 Shinken 麵板:

我們的兩個服務器正在被 Shinken 監控:

列出所有被 linux-snmp 監控的服務:

所有主機和服務的狀態信息:

第6步 Shinken 的常見問題

NTP 服務器相關的問題

當你得到如下的 NTP 錯誤提示


  1. TimeSync - CRITICAL ( NTP CRITICAL: No response from the NTP server)
  2. TimeSync - CRITICAL ( NTP CRITICAL: Offset unknown )

為了解決這個問題,在所有 Linux 主機上安裝 ntp。


  1. sudo apt-get install ntp ntpdate

編輯 ntp 配置文件:


  1. vim /etc/ntp.conf

注釋掉所有 pools 並替換為:


  1. #pool 0.ubuntu.pool.ntp.org iburst
  2. #pool 1.ubuntu.pool.ntp.org iburst
  3. #pool 2.ubuntu.pool.ntp.org iburst
  4. #pool 3.ubuntu.pool.ntp.org iburst
  5. pool 0.id.pool.ntp.org
  6. pool 1.asia.pool.ntp.org
  7. pool 0.asia.pool.ntp.org

然後,在新的一行添加如下限製規則:


  1. # Local users may interrogate the ntp server more closely.
  2. restrict 127.0.0.1
  3. restrict 192.168.1.120 #shinken server IP address
  4. restrict ::1
  5. NOTE: 192.168.1.120 is the Shinken server IP address.

保存並退出。

啟動 ntp 並且檢查 Shinken 麵板。


  1. ntpd

check_netint.pl Not Found 問題

從 github 倉庫下載源代碼到 shinken 的庫目錄下:


  1. cd /var/lib/shinken/libexec/
  2. wget https://raw.githubusercontent.com/Sysnove/shinken-plugins/master/check_netint.pl
  3. chmod +x check_netint.pl
  4. chown shinken:shinken check_netint.pl

網絡占用的問題

這是錯誤信息:


  1. ERROR : Unknown interface eth\d+

檢查你的網絡接口並且編輯 linux-snmp 模版。

在我的 Ununtu 服務器,網卡是 “enp0s8”,而不是 eth0,所以我遇到了這個錯誤。

vim 編輯 linux-snmp 模版:


  1. vim /etc/shinken/packs/linux-snmp/templates.cfg

在第 24 行添加網絡接口信息:


  1. _NET_IFACES eth\d+|em\d+|enp0s8

保存並退出。

原文發布時間為:2016-09-29

本文來自雲棲社區合作夥伴“Linux中國”

最後更新:2017-06-06 16:03:03

  上一篇:go  人工智能還能當算命師?能預測人類壽命?
  下一篇:go  科學音頻處理(二):如何使用 Octave 對音頻文件進行基本數學信號處理