1.前言php
在前一篇讲述了如何安装Memcached和Redis,在这一篇主要讲述如何安装企业级IT设备监控系统Zabbix。本人曾在某大型集团公司信息化部门工做,公司在多个城市以及一个城市的多个区有办公区,在那里不只会开发软件系统,还须要对大量的软件系统、操做系统及IT设备进行监控,以保证IT基础设施可以7×24小工做。在没有实施系统以前,常常接到电话被告知网络中断了或是某个应用程序没法使用了,每次接到电话以后首先要排除是否误报,而后再分析是哪里出了问题,最终找出解决办法。每次处理事情的周期很长,也很麻烦,因而本人在网上寻找相似软件,最终在smokeping、cacti、nagios、zabbix、ntop等众多软件中选择了Zabbix。Zabbix的官方网站为:https://www.zabbix.com,因为发展了不少年,因此在官方网站上有大量的文档和监控模板。html
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。zabbix能监视各类网络参数,保证服务器系统的安全运营;并提供柔软的通知机制以让系统管理员快速定位/解决存在的各类问题。zabbix由2部分构成,zabbix server与可选组件zabbix agent。zabbix server能够经过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它能够运行在Linux, Solaris, HP-UX, AIX, Free BSD, Open BSD, OS X等平台上。Zabbix Server必须安装在Linux系统上,但Zabbix agent则有适应各类操做系统的版本。java
固然,若是是我的或小组简单应用,能够考虑本身开发一些小工具来实现,好比在Windows上能够利用PerformanceCounter之类的工具(在Linux上也有相似的工具)来实现部分功能,本人之前曾尝试过,也见过别人作过相似的工做,但毕竟应用面比较窄,要想全面监控,仍是用企业级IT设备及系统开源监控工具比较好。mysql
2.准备ios
Zabbix相关的资源下载页面为https://www.zabbix.com/download,能够在此安装我的须要下载。nginx
2.1zabbix服务器端web
提供了针对各类类型操做系统的Zabbix Server安装包和已经在虚拟机配置好的虚拟机文件,同时还提供了源代码供动手能力强的人本身编译安装,在这里咱们就本身编译安装,下载最新版本Zabbix server版本,为3.4.3,下载地址:https://ncu.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.4.3/zabbix-3.4.3.tar.gzsql
2.2zabbix Linux客户端数据库
这里就直接下载已经编译好的客户端便可,下载地址:json
2.3zabbix Windows客户端
这里就下载编译好的客户端,下载地址:https://www.zabbix.com/downloads/3.4.0/zabbix_agents_3.4.0.win.zip。
3.编译安装
3.1Zabbix server编译安装
首先将Zabbix Server源代码上传到服务器(能够上传也能够在Linux服务器上用wget下载),假定放在/root路径下。
首先建立zabbix运行时的帐户:
groupadd zabbix
useradd -g zabbix zabbix
接着解压zabbix源代码:
tar -zxvf zabbix-3.4.3.tar.gz
cd /root/zabbix-3.4.3
能够查看zabbix的编译配置参数:
./configure –help
其中有几个比较重要的参数:
--prefix=PREFIX 指定安装位置
--enable-server 启用服务器功能
--enable-agent 启用客户端功能
--enable-java 启用Java gateway功能
--enable-ipv6 启用IPv6
--with-mysql 支持MySQL
--with-libxml2 支持xml
--with-net-snmp 支持net-snmp
--with-ssh2 支持ssh2
--with-libcurl 支持cURL
在咱们进行编译以前,咱们须要安装一些库,主要是编译和运行过程当中须要,安装命令以下:
yum install net-snmp net-snmp-devel net-snmp-utils libssh2 libssh2-devel openldap openldap-devel unixODBC unixODBC-devel OpenIPMI OpenIPMI-devel libevent libevent-devel -y
若是不安装这些库,能够在运行下面的configure命令时出现以下错误:
configure: error: net-snmp library not found
configure: error: SSH2 library not found
configure: error: unixODBC library not found
configure: error: SSH2 library not found
由于在本系列以前的文章中咱们已经安装了MySQL、PHP及Java,因此咱们这里只须要指定路径便可,如:
--with-mysql=/usr/local/mysql-5.7.18/bin/mysql_config
咱们如今安装Zabbix Server的服务器是CentOS7,Linux内核版本为3.10,咱们已经安装了MySQL5.7及PHP5.6.30,所以咱们的编译配置为:
./configure --prefix=/usr/local/zabbix\ --enable-server\ --enable-agent\ --enable-ipv6\ --enable-java\ --with-mysql=/usr/local/mysql-5.7.18/bin/mysql_config\ --with-net-snmp=/usr/bin/net-snmp-config\ --with-libcurl\ --with-libxml2\ --with-openipmi\ --with-unixodbc\ --with-ldap\ --with-ssh2\
如无心外则会编译成功。
题外话:在本系列上一篇在讲编译安装Memcached的时候讲了编译安装libevent的,当时指定libevent安装在/usr/local/libevent,我本着能少一事就少一事的态度,经过参数指定libevent的位置,再也不安装libevent,结果编译报错,说是找不到event.h,个人configure参数以下:
./configure --prefix=/usr/local/zabbix\ --enable-server\ --enable-agent\ --enable-ipv6\ --enable-java\ --with-mysql=/usr/local/mysql-5.7.18/bin/mysql_config\ --with-net-snmp=/usr/bin/net-snmp-config\ --with-libcurl\ --with-libxml2\ --with-openipmi\ --with-unixodbc\ --with-ldap\ --with-ssh2\ --with-libevent=/usr/local/libevent\ --with-libevent-include=/usr/local/libevent/include/event2\ --with-libevent-lib=/usr/local/libevent/lib
在这里折腾了很长时间,本身屡次尝试,包括在官网和网上寻找答案均无结果,最终无奈之下选择yum install libevent libevent-devel来解决问题。
3.2Zabbix-agent编译安装
对于Zabbix的客户端也能够编译安装,也能够直接安装已经编译好的安装包,在Linux下使用yum install方式来安装,也能够像在Windows下同样下载压缩包后解压缩安装。
其中介绍下Windows下安装过程:
按照前文说起的下载地址下载压缩包,将其解压到带安装的Windows主机的C盘下,解压后的路径为:C:\zabbix_agents_3.4.0.win,在C:\zabbix_agents_3.4.0.win\bin目录下有win32和win64两个目录分别对应x86和x64架构,因本人的机器为Win7 X64,所以在命令窗口下安装的命令为:
cd C:\zabbix_agents_3.4.0.win\bin\win64
zabbix_agentd.exe -c C:\zabbix_agents_3.4.0.win\conf\zabbix_agentd.win.conf –i
上述命令执行成功后你会在Windows系统的服务中多了一个Zabbix Agent的服务。
启动zabbix_agentd的命令为:
zabbix_agentd.exe -c C:\zabbix_agents_3.4.0.win\conf\zabbix_agentd.win.conf –s
4.配置
4.1初始化Zabbix数据库
首先,请确认MySQL已经启动,而后登陆到MySQL。
[root@common ~]# /usr/local/mysql-5.7.18/bin/mysql -u root -p
Enter password:
而后建立Zabbix数据库,Zabbix的数据库初始化文件在/root/zabbix-3.4.3/database目录下(注意本文是将Zabbix源码包解压到/root/zabbix-3.4.3目录下,若是不是此目录请根据实际状况修改),从目录下的文件夹名可知Zabbix支持DB二、Oracle、MySQL、PostgreSql和SQLite数据库,当若是监控的设备数较多的话,建议仍是不要使用SQLite了。
下面就来建立数据库和初始化数据库:
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbixpassword'; flush privileges;
mysql> quit;
注意:
请将上面的SQL语句中的'zabbixpassword'更改成实际的数据库密码,并牢记住这个密码,稍后会使用这个密码。
若是在my.cnf中配置了” skip-name-resolve”,即禁止MySQL将域名解析为IP,那么就须要将受权语句改成:“grant all privileges on zabbix.* to zabbix@’127.0.0.1’ identified by 'zabbixpassword'; flush privileges;”
至此已经完成了数据库的建立,可是尚未初始化,下面以刚刚建立的zabbix这个MySQL帐号去完成zabbix数据库的初始化。
/usr/local/mysql-5.7.18/bin/mysql -u zabbix -p Enter password: mysql> use zabbix; mysql> source /root/zabbix-3.4.3/database/mysql/ schema.sql; mysql> source /root/zabbix-3.4.3/database/mysql/ images.sql; mysql> source /root/zabbix-3.4.3/database/mysql/ data.sql;
至此,完成了MySQL数据库的初始化了,能够进行Zabbix管理系统的安装了。
4.2Zabbix Server配置
在前面的编译安装过程当中,咱们指定了Zabbix的安装路径为/usr/local/zabbix,在这个目录下还有一些子文件夹:
etc文件夹用于存放zabbix服务器的配置文件的,主要两个,分别是zabbix_server.conf和zabbix_agentd.conf;
sbin文件夹用于存放Zabbix的server和agent启动文件的。
通过编译安装后的zabbix监听和监控程序是不能正常运行的,须要对其进行配置。
zabbix_server.conf文件存放了Zabbix服务器做为服务端监听程序的一些配置,主要有如下几个地方须要修改:
DBName=zabbix 数据库名称,请根据实际状况修改
DBUser=zabbix 数据库用户,请根据实际状况修改
DBPassword=zabbix 数据库密码,请根据实际状况修改
zabbix_agentd.conf须要配置的有:
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=Zabbix server
下面是在Zabbix服务器上两个文件的配置状况:
须要说明的是:zabbix_server和zabbix_agentd两个程序分别有不一样的用途,能够这么理解(实际上某些场合会有些不同):zabbix_server做为服务器进程运行,接收客户端zabbix_agentd发送过来的数据,而zabbix_agentd负责将本机的监控指标数据发送到zabbix_server进程,所以要想监控Zabbix服务器自己所在的Linux系统的性能,也须要启动zabbix_agentd。这两个程序分别使用的是zabbix_server.conf和zabbix_agentd.conf两个配置文件,在非Zabbix服务器上再次部署时仅仅须要安装和配置zabbix_agentd便可。
通过上面的配置,能够从命令行启动zabbix_server和zabbix_agentd了。
启动zabbix_server:
/usr/local/zabbix/sbin/zabbix_server
启动zabbix_agentd:
usr/local/zabbix/sbin/zabbix_agentd
本人在启动zabbix_server时报以下错误:
error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory
经查找ibmysqlclient.so.20位于/usr/local/mysql-5.7.18/lib/目录下,所以建立了一个连接:
ln -s /usr/local/mysql-5.7.18/lib/libmysqlclient.so.20 /usr/lib64/libmysqlclient.so.20
错误消失。
另外,在实际工做场景中手动启动zabbix_server和zabbix_agentd毕竟不是很方便,所以能够将其注册为service,在编译安装Zabbix时的压缩包下就存放有将其注册为系统service的脚本,在本篇中这个目录是:/root/zabbix-3.4.3/misc/init.d,在这个目录下能够找到ubuntu等系统的名字可是找不到RedHat和CentOS的名字,可是熟悉Linux的人会知道Fedora、RHEL/Red Hat Enterprise Linux及CentOS的关系,而选择/root/zabbix-3.4.3/misc/init.d/fedora/core5下的文件。
将/root/zabbix-3.4.3/misc/init.d/fedora/core5目录下的zabbix_server和zabbix_agentd文件拷贝到/etc/init.d/目录下,修改其中的zabbix_server和zabbix_agentd的路径信息,而后chmod 755 /etc/init.d/zabbix_*,并执行以下命令:
chkconfig zabbix_server on
chkconfig zabbix_agentd on
这样zabbix_server和zabbix_agentd就能够随着系统启动了。
4.3安装Zabbix系统
由于zabbix压缩包解压在/root/zabbix-3.4.3,在这个目录下有一个frontends目录,这个目录下包含了Zabbix的Web管理界面,能够将其复制到Web服务器目录上:
mkdir /usr/local/nginx-1.12.0/html/zabbix
cp -r /root/zabbix-3.4.3/frontends/php/* /usr/local/nginx-1.12.0/html/zabbix
注:在本系列第5篇讲述了Nginx的安装,在本系列的第7篇讲述了Nginx与php-fpm的集成,nginx安装在/usr/local/nginx-1.12.0/目录下。
如今能够安装Zabbix的Web管理系统了,为避免虚拟机与宿主机频繁切换麻烦,建议将虚拟机经过桥接方式接入到宿主机网络,而后在宿主机上访问虚拟机上的Web系统,在这里安装zabbix的虚拟机IP为192.168.0.108,首先在宿主机中打开网址http://192.168.0.108/zabbix/,会看到Zabbix的欢迎界面:
点击下一步进行安装环境检查,若是没有知足安装条件,则会看到错误信息,以下图所示:
大多数状况下都会给出如何改正的建议,按照建议去修改便可,当知足安装条件时看到以下界面:
点击下一步,进行数据库链接信息的配置,以下图所示:
在这里仍是提醒一下,若是在my.cnf中配置了“skip-name-resolve”,那么就请将上面的”localhost”替换成127.0.0.1。
点击下一步便可配置Zabbix主机信息,以下图所示:
点击下一步,进行安装前的配置信息检查,以下图所示:
点击下一步,开始安装,若是/usr/local/nginx-1.12.0/html/zabbix/conf/文件夹权限不够的话,可能遇到下面的提示:
遇到这种状况有几种办法,一种是给文件夹赋予当前web系统所使用的角色的写的权限;一种是按照上面的提示将文件下载下来放到指定的位置。
解决了上面的问题便可完成安装了,界面以下:
至此,完成了Zabbix服务器的安装了。
5.检验配置
在宿主机打开zabbix的首页http://192.168.0.108/zabbix/index.php,进行登陆,注意Zabbix默认的管理帐号和对应的密码是:Admin/zabbix(Linux中区分大小写的,同时记得登入系统以后第一件事就是更改默认密码),登陆进来以后界面以下:
上面没有任何数据,同时在最下方能够看到“zabbix server is running:The information displayed may not be current”的提示。
5.1更改密码和系统语言
默认状况下Zabbix使用的是英文,对于大多数人来讲不够亲切,能够在http://192.168.0.108/zabbix/profile.php网页修改,同时也能够在这个界面修改本身的登陆密码,以下图所示:
在Language处选择”Zh-cn”而后点击Update按钮,用户界面就会变成中文了。
5.2解决中文乱码问题
切换为简体中文以后,会发如今”监视中”-“图形”界面一些文字是乱码,须要采用以下办法解决:
将Windows系统中的simkai.ttf这个字体文件上传到Zabbix的Web系统目录下,simkai.ttf这个文件在Win7中的位置为:C:\Windows\Fonts\simkai.ttf,将在上传到/usr/local/nginx-1.12.0/html/zabbix/fonts目录下(这个视安装位置而定)。
而后在命令行下切换到/usr/local/nginx-1.12.0/html/zabbix/,执行以下命令:
sed -i 's/DejaVuSans/simkai/g' ./include/defines.inc.php
至此,中文乱码问题解决,以下图所示:
5.3添加主机
首先在被监控的主机上安装对应的agent客户端,并配置好agentd.conf文件(参考Zabbix server上的配置)。
接着经过“配置”-“主机”-“建立主机”能够打开建立主机页面,要填写的信息以下图所示:
在接下来的操做中设置须要关联的模板,经过设置关联模板就决定了会监控哪些数据,以下图所示:
经过上述步骤完成了被监控主机的建立。
5.4模板管理
Zabbix默认提供了一些模板,但实际上这些模板不足以知足咱们灵活多变的监控需求,若是对Zabbix足够熟练能够本身去建立模板,可是对于初次使用的人来讲这个要求有些高,所以还能够从https://share.zabbix.com/下载一些已经通过别人验证过的模板,下图是该网页截图:
你们能够根据分类快速找到适合本身的模板。
5.5Zabbix API
Zabbix提供了API服务,对于常见的操做和查询都可经过API进行,在Zabbix服务器上能够经过http://localhost/zabbix/api_jsonrpc.php来访问Zabbix API,这个API接收和响应的数据都是使用JSON的。本人以前使用C#开发过一个邮件通知系统,用于定时查询Zabbix的状态,若是异常就发送通知邮件,邮件格式以下:
这样一来,就不须要时时刻刻监控Web页面,有异常就会收到邮件通知了。
6.总结
本篇讲述了如何在CentOS7中安装Zabbix这个企业级开源IT设备监控系统,对于拥有大量须要监控的IT设备和应用的团队来讲,使用一个好的监控工具能够大大减轻运维人员的压力,至少在我担任某上市公司信息化副总期间,经过这个工具我基本上没有让运维人员向我报告过集团公司的网络设备、服务器及网络的异常状况,极大地方便了运维人员。不过因为时间限制,没有来得及详述Zabbix的更细致用法,包括我曾经为Zabbix写的一个基于Zabbix API的查询服务,遇到异常状况及时向运维人员告警的监控工具。
声明:本文首发于本人我的微信订阅号:zhoujinqiaoIT,其后会同时在本人的CSDN、51CTO及oschina三处博客发布,本人会负责在此四处答疑。