在 Ubuntu 16.04 上使用 Shinken 进行服务器监控
在此页
- 第 1 步 - 安装 Shinken 服务器
- 第 2 步 - 安装 Shinken Webui2
- 第 3 步 - 安装 Nagios 插件和 Shinken 包
- 第 4 步 - 添加新的 Linux 主机/host-one
- 第 5 步 - 访问 Shinken Webui2
- 第 6 步 - Shinken 的常见问题
- 参考资料
Shinken 是一个用 python 编写并与 Nagios 兼容的开源计算机和网络监控框架。 Shinken 可以在所有可以运行 python 应用程序的操作系统上使用,如 Linux、Unix 和 Windows。 Shinken 由 Jean Gabes 编写,作为新 Nagios 架构的概念证明,但被 Nagios 作者拒绝并成为与 Nagios 保持兼容的独立网络和系统监控工具。
在本教程中,我将向您展示如何从源代码安装 Shinken 并将 Linux 主机添加到监控系统。我将使用 Ubuntu 16.04 Xenial Xerus 作为 Shinken 服务器和监控主机的操作系统。
第 1 步 - 安装 Shinken 服务器
Shinken是一个python框架,我们可以用pip安装,也可以源码安装。在这一步中,我们将从源代码安装 Shinken。
在我们开始安装 Shinken 之前,有一些任务必须完成。
安装一些新的 python 包并创建名为 \shinken\ 的 Linux 用户:
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
第 2 步 - 安装 Shinken Webui2
Webui2 是 Shinken.io 提供的 Shinken 网络界面。安装 Sshinken webui2 的最简单方法是使用 shinken CLI 命令(必须以 shinken 用户身份执行)。
登录 shinken 用户:
su - shinken
初始化 shinken 配置文件 - 该命令将创建一个新的配置 .shinken.ini:
shinken --init
并使用这个 shinken CLI 命令安装 webui2:
shinken install webui2

Webui2 已经安装,但是我们需要用 pip 安装 MongoDB 和另一个 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
保存文件并退出编辑器。
现在转到联系人目录并为管理配置编辑文件 admin.cfg。
cd /etc/shinken/contacts/
vim admin.cfg
更改如下所示的值:
contact_name admin # Username 'admin'
password yourpass # Pass 'mypass'
保存并退出。
第 3 步 - 安装 Nagios 插件和 Shinken 包
在这一步中,我们将安装 Nagios-plugins 和一些 Perl 模块。然后从 shinken.io 安装额外的 shinken 包来执行监控。
安装构建和安装 Perl 模块所需的 Nagios 插件和 cpanminus:
sudo apt-get install nagios-plugins* cpanminus
使用 cpanm 命令安装这些 Perl 模块:
cpanm Net::SNMP
cpanm Time::HiRes
cpanm DBI
现在为 utils.pm 文件创建新链接以缩小目录并为 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 包 ssh 和 linux-snmp 以监控来自 shinken.io 的 SSH 和 SNMP 源:
su - shinken
shinken install ssh
shinken install linux-snmp
第 4 步 - 添加新的 Linux 主机/host-one
我们将添加一个新的 Linux 主机,该主机应使用 IP 地址为 192.168.1.121 且主机名为 host-one 的 Ubuntu 16.04 服务器进行监控。
连接到 Linux 主机一:
ssh
从 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 - 必须与您在客户端 host-one 上的 snmpd 配置文件中使用的密码相同。
$SNMPCOMMUNITYREAD$=mypass
保存并退出。
现在重启两台服务器——Shinken 服务器和被监控的 Linux 主机:
reboot
新的Linux主机已成功添加到Shinken服务器。
第 5 步 - 访问 Shinken Webui2
在 7677 端口访问 Shinken webui2(将 URL 中的 IP 替换为您的 IP):
使用用户 admin 和您的密码(您在 admin.cfg 配置文件中设置的密码)登录。

Webui2 中的 Shinken 仪表板。

我们的 2 台服务器由 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
评论所有池并将其替换为:
#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
接下来,在 restrict 中添加一个新行:
# 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
注意:192.168.1.120 是 Shinken 服务器的 IP 地址。
保存并退出。
启动 ntp 并检查 Shinken 仪表板:
ntpd
- 未找到问题 check_netint.pl
从github仓库下载源码到shinken lib目录:
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 模板。
在我的 Ubuntu 服务器上,网络接口是 enp0s8,而不是 eth0,所以我得到了这个错误。
使用 vim 编辑 linux-snmp 模板包:
vim /etc/shinken/packs/linux-snmp/templates.cfg
将网络接口添加到第 24 行:
_NET_IFACES eth\d+|em\d+|enp0s8
保存并退出。
参考
- <李>
- http://www.roblayton.com/search/label/monitoring