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>
至此 webui2 已经安装好,但是我们还需要安装 mongodb 和用 <code>pip</code> 来安装另一个 python 软件包。在 root 下运行如下命令:
<code>sudo apt-get install mongodb</code>
<code>pip install pymongo>=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 文件中设置的)
webui2 中的 shinken 面板:
我们的两个服务器正在被 shinken 监控:
列出所有被 linux-snmp 监控的服务:
所有主机和服务的状态信息:
当你得到如下的 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中国”