天天看点

在 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 服务器和所监控的主机。

<a target="_blank"></a>

shinken 是一个 python 框架,我们可以通过 <code>pip</code> 安装或者从源码来安装它,在这一步中,我们将用源代码编译安装 shinken。

在我们开始安装 shinken 之前还需要完成几个步骤。

安装一些新的 python 软件包并创建一个名为 <code>shinken</code> 的系统用户:

<code>sudo apt-get install python-setuptools python-pip python-pycurl</code>

<code>useradd -m -s /bin/bash shinken</code>

从 github 仓库下载 shinken 源代码:

<code>git clone https://github.com/naparuba/shinken.git</code>

<code>cd shinken/</code>

然后用以下命令安装 shinken:

<code>git checkout 2.4.3</code>

<code>python setup.py install</code>

然后,为了得到更好的效果,我们还需要从 ubuntu 软件库中安装 <code>python-cherrypy3</code> 软件包:

<code>sudo apt-get install python-cherrypy3</code>

到这里,shinken 已经成功安装,接下来我们将 shinken 添加到系统启动项并且启动它:

<code>update-rc.d shinken defaults</code>

<code>systemctl start shinken</code>

webui2 是 shinken 的 web 界面(在 shinken.io 可以找到)。最简单的安装 shinken webui2 的方法是使用shinken cli 命令(必须作为 <code>shinken</code> 用户执行)。

切换到 shinken 用户:

<code>su - shinken</code>

初始化 shiken 配置文件,下面的命令将会创建一个新的配置文件 <code>.shinken.ini</code> :

<code>shinken --init</code>

接下来用 shinken cli 命令来安装 <code>webui2</code>:

<code>shinken install webui2</code>

在 Ubuntu 16.04 上安装和使用服务器监控报警系统 Shinken

至此 webui2 已经安装好,但是我们还需要安装 mongodb 和用 <code>pip</code> 来安装另一个 python 软件包。在 root 下运行如下命令:

<code>sudo apt-get install mongodb</code>

<code>pip install pymongo&gt;=3.0.3 requests arrow bottle==0.12.8</code>

接下来,切换到 shinken 目录下并且通过编辑 <code>broker-master.cfg</code> 文件来添加这个新的 webui2 模块:

<code>cd /etc/shinken/brokers/</code>

<code>vim broker-master.cfg</code>

在第 40 行添加一个模块选项:

<code>modules webui2</code>

保存文件并且退出编辑器。

现在进入 <code>contacts</code> 目录下编辑 <code>admin.cfg</code> 来进行管理配置。

<code>cd /etc/shinken/contacts/</code>

<code>vim admin.cfg</code>

按照如下修改:

<code>contact_name admin # username 'admin'</code>

<code>password yourpass # pass 'mypass'</code>

保存和退出。

在这一步中,我们将安装 nagios 插件和一些 perl 模块。然后从 shinken.io 安装其他的软件包来实现监视。

安装 nagios 插件和安装 perl 模块所需要的 <code>cpanminus</code>:

<code>sudo apt-get install nagios-plugins* cpanminus</code>

用 <code>cpanm</code> 命令来安装 perl 模块。

<code>cpanm net::snmp</code>

<code>cpanm time::hires</code>

<code>cpanm dbi</code>

现在我们创建一个 <code>utils.pm</code> 文件的链接到 shinken 的目录,并且为 <code>log_file_health</code> 创建了一个新的日志目录 。

<code>chmod u+s /usr/lib/nagios/plugins/check_icmp</code>

<code>ln -s /usr/lib/nagios/plugins/utils.pm /var/lib/shinken/libexec/</code>

<code>mkdir -p /var/log/rhosts/</code>

<code>touch /var/log/rhosts/remote-hosts.log</code>

然后,从 shinken.io 安装 shinken 软件包 <code>ssh</code> 和 <code>linux-snmp</code> 来监视 ssh 和 snmp :

<code>shinken install ssh</code>

<code>shinken install linux-snmp</code>

我们将添加一个新的将被监控的 linux 主机,ip 地址为 192.168.1.121,主机名为 host-one 的 ubuntu 16.04。

连接到 host-one 主机:

<code>ssh [email protected]</code>

从 ubuntu 软件库中安装 snmp 和snmpd 软件包:

<code>sudo apt-get install snmp snmpd</code>

然后,用 <code>vim</code> 编辑 <code>snmpd.conf</code> 配置文件:

<code>vim /etc/snmp/snmpd.conf</code>

注释掉第 15 行并取消注释第 17 行:

<code>#agentaddress udp:127.0.0.1:161</code>

<code>agentaddress udp:161,udp6:[::1]:161</code>

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

<code>#rocommunity mypass default -v systemonly</code>

<code>#rocommunity6 mypass default -v systemonly</code>

<code></code>

<code>rocommunity mypass</code>

保存并退出。

现在用 <code>systemctl</code> 命令来启动 <code>snmpd</code> 服务:

<code>systemctl start snmpd</code>

在 shinken 服务器上通过在 <code>hosts</code> 文件夹下创建新的文件来定义一个新的主机:

<code>cd /etc/shinken/hosts/</code>

<code>vim host-one.cfg</code>

粘贴如下配置信息:

<code>define host{</code>

<code>use generic-host,linux-snmp,ssh</code>

<code>contact_groups admins</code>

<code>host_name host-one</code>

<code>address 192.168.1.121</code>

<code>_snmpcommunity mypass # snmp pass config on snmpd.conf</code>

<code>}</code>

在 shinken 服务器上编辑 snmp 配置文件。

<code>vim /etc/shinken/resource.d/snmp.cfg</code>

将 <code>public</code> 改为 <code>mypass</code> -必须和你在客户端 <code>snmpd</code> 配置文件中使用的密码相同:

<code>$snmpcommunityread$=mypass</code>

现在将服务端和客户端都重启:

<code>reboot</code>

现在 linux 主机已经被成功地添加到 shinken 服务器中了。

在端口 7677 访问 shinken webui2 (将 url 中的 ip 替换成你自己的 ip 地址):

<code>http://192.168.1.120:7767</code>

用管理员用户和密码登录(你在 admin.cfg 文件中设置的)

在 Ubuntu 16.04 上安装和使用服务器监控报警系统 Shinken

webui2 中的 shinken 面板:

在 Ubuntu 16.04 上安装和使用服务器监控报警系统 Shinken

我们的两个服务器正在被 shinken 监控:

在 Ubuntu 16.04 上安装和使用服务器监控报警系统 Shinken

列出所有被 linux-snmp 监控的服务:

在 Ubuntu 16.04 上安装和使用服务器监控报警系统 Shinken

所有主机和服务的状态信息:

在 Ubuntu 16.04 上安装和使用服务器监控报警系统 Shinken

当你得到如下的 ntp 错误提示

<code>timesync - critical ( ntp critical: no response from the ntp server)</code>

<code>timesync - critical ( ntp critical: offset unknown )</code>

为了解决这个问题,在所有 linux 主机上安装 ntp。

<code>sudo apt-get install ntp ntpdate</code>

编辑 ntp 配置文件:

<code>vim /etc/ntp.conf</code>

注释掉所有 pools 并替换为:

<code>#pool 0.ubuntu.pool.ntp.org iburst</code>

<code>#pool 1.ubuntu.pool.ntp.org iburst</code>

<code>#pool 2.ubuntu.pool.ntp.org iburst</code>

<code>#pool 3.ubuntu.pool.ntp.org iburst</code>

<code>pool 0.id.pool.ntp.org</code>

<code>pool 1.asia.pool.ntp.org</code>

<code>pool 0.asia.pool.ntp.org</code>

然后,在新的一行添加如下限制规则:

<code># local users may interrogate the ntp server more closely.</code>

<code>restrict 127.0.0.1</code>

<code>restrict 192.168.1.120 #shinken server ip address</code>

<code>restrict ::1</code>

<code>note: 192.168.1.120 is the shinken server ip address.</code>

启动 ntp 并且检查 shinken 面板。

<code>ntpd</code>

从 github 仓库下载源代码到 shinken 的库目录下:

<code>cd /var/lib/shinken/libexec/</code>

<code>wget https://raw.githubusercontent.com/sysnove/shinken-plugins/master/check_netint.pl</code>

<code>chmod +x check_netint.pl</code>

<code>chown shinken:shinken check_netint.pl</code>

这是错误信息:

<code>error : unknown interface eth\d+</code>

检查你的网络接口并且编辑 <code>linux-snmp</code> 模版。

在我的 ununtu 服务器,网卡是 “enp0s8”,而不是 eth0,所以我遇到了这个错误。

<code>vim</code> 编辑 <code>linux-snmp</code> 模版:

<code>vim /etc/shinken/packs/linux-snmp/templates.cfg</code>

在第 24 行添加网络接口信息:

<code>_net_ifaces eth\d+|em\d+|enp0s8</code>

原文发布时间为:2016-09-29

本文来自云栖社区合作伙伴“linux中国”