开发人员学Linux(13):CentOS7安装配置IT设备监控系统Zabbix

1.前言

在前一篇讲述了如何安装Memcached和Redis,在这一篇主要讲述如何安装企业级IT设备监控系统Zabbix。本人曾在某大型集团公司信息化部门工作,公司在多个城市以及一个城市的多个区有办公区,在那里不仅会开发软件系统,还需要对大量的软件系统、操作系统及IT设备进行监控,以保证IT基础设施能够7×24小工作。在没有实施系统之前,经常接到电话被告知网络中断了或是某个应用程序无法使用了,每次接到电话之后首先要排除是否误报,然后再分析是哪里出了问题,最终找出解决办法。每次处理事情的周期很长,也很麻烦,于是本人在网上寻找类似软件,最终在smokeping、cacti、nagios、zabbix、ntop等众多软件中选择了Zabbix。Zabbix的官方网站为:https://www.zabbix.com,由于发展了很多年,所以在官方网站上有大量的文档和监控模板。

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则有适应各种操作系统的版本。

当然,如果是个人或小组简单应用,可以考虑自己开发一些小工具来实现,比如在Windows上可以利用PerformanceCounter之类的工具(在Linux上也有类似的工具)来实现部分功能,本人以前曾尝试过,也见过别人做过类似的工作,但毕竟应用面比较窄,要想全面监控,还是用企业级IT设备及系统开源监控工具比较好。

2.准备

Zabbix相关的资源下载页面为https://www.zabbix.com/download,可以在此安装个人需要下载。

2.1zabbix服务器端

提供了针对各种类型操作系统的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.gz

2.2zabbix Linux客户端

这里就直接下载已经编译好的客户端即可,下载地址:

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。

[[email protected] ~]# /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支持DB2、Oracle、MySQL、PostgreSql和SQLite数据库,当如果监控的设备数较多的话,建议还是不要使用SQLite了。

下面就来创建数据库和初始化数据库:

mysql> create database zabbix character set utf8 collate utf8_bin;

mysql> grant all privileges on zabbix.* to [email protected] identified by 'zabbixpassword'; flush privileges;

mysql> quit;

注意:

请将上面的SQL语句中的'zabbixpassword'更改为实际的数据库密码,并牢记住这个密码,稍后会使用这个密码。

如果在my.cnf中配置了” skip-name-resolve”,即禁止MySQL将域名解析为IP,那么就需要将授权语句改为:“grant all privileges on zabbix.* to [email protected]’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三处博客发布,本人会负责在此四处答疑。

时间: 2024-12-11 19:09:47

开发人员学Linux(13):CentOS7安装配置IT设备监控系统Zabbix的相关文章

开发人员学Linux(10):CentOS7安装配置代码质量管理平台SonarQube6.4

1.前言上一章讲述了如何配置使用源代码管理工具SVN并使之与Apache集成,从而实现代码的变更可追溯,虽然在大多数团队里强调代码提交之前必须找团队中经验丰富的人来审核通过后方可提交,但这一条有时候不是所有时候都能得到满足,有没有依赖于机制而不是人来保证代码质量呢,我们知道计算机的缺点也是优点之一就是可以忠实执行指令.答案是有的,那就是SonarQube,其官方网址为:https://www.sonarqube.org/,目前最新版本为6.4.SonarQube是一个开源平台,用于管理源代码的质

开发人员学Linux(4):使用JMeter对网站和数据库进行压力测试

前言表面看来,JMeter与本系列课程似乎关系不大,但实际上在后面的很多场景中起着重要作用:如何获知修改了某些代码或者设置之后系统性能是提升了还是下降了呢?商业的压力测试工具LoadRunner确实很高大上,但是据说费用也不便宜且体积也不小,而目前最高版本的开源免费压力测试工具JMeter3.2压缩包体积才不到53M,而且对于开发人员而非专业测试人员来说,JMeter提供的测试功能已经够强大了.要完整地介绍JMeter,即使把JMeter自带的文档翻译成中文就是一本厚厚的书了.但是在本篇只讲述如

开发人员学Linux之终结篇:大型系统开发经验谈

1.前言这篇文章来源于我的一个ppt,而这个ppt是源于一个朋友的一次邀请,朋友邀请我为一个公司做一堂大约2小时的技术讲座,我选定的方向是如何开发一个大型系统,在这里我对大型系统的定义为日均PV在千万级以上,而京东和淘宝这类则属于巨型系统了.因此在本篇中讲述的都是基于一些开源免费的技术实现,至于那些通过F5硬件加速.DNS来实现负载均衡.CDN加速等需要花钱购买的技术或者服务则不再本篇介绍范围之类.本来此篇是作为<开发人员学Linux>系列的终结篇最后出现的,但是考虑到在此过程中我可能会由于时

开发人员学Linux(6):CentOS7编译安装MySQL5.17.8多实例及主从复制

1.前言上一篇讲述了如何在CentOS7下编译安装Nginx-1.12.0并如何配置反向代理,本篇将讲述如何编译安装MySQL5.7.18并配置多实例.2.准备2.1下载MySQL5.7.18源码注意最新版本的MySQL需要Boost才能编译安装,在MySQL提供的下载中有不带boost的源码,还有带boost的源码,如果下载不带boost的源码还需要再去下载boost源码,为省事起见,建议下载带boost的源码,下载地址:https://cdn.mysql.com//Downloads/MyS

开发人员学Linux(3):CentOS7中安装JDK8和Tomcat8

题外话:直到今天开始写本系列的第三篇时本人才想好为这个系列取一个名字,本系列不是为Linux运维人员准备的,而是主要为开发人员准备的,包括但不限于:希望了解Linux的开发人员:需要在Linux上部署一些组件的开发人员,如Memcached/Nginx/Redis等:需要使用一些在Linux上部署运行效果可能会更好的效果的系统,如Jetkins.SVN.JavaMelody等.希望了解一些当前较热的技术,想在虚拟机里搭建个环境把玩一番的,如.Net Core/Hadoop等.因此在本系列文章中不

开发人员学Linux(7):CentOS7编译安装PHP并配置PHP-FPM

1.前言上一篇讲述了如何编译安装MySQL,虽然可以通过yum install 或者rpm来安装,但是yum install和rpm安装有一个特点,就是有些参数是别人根据大众需求定制的,如果需要进行自己的特定参数指定,这个是比较难做到的,因此有一定Linux基础的人都是编译安装或者根据公司的具体环境制作适合环境的安装包.上一篇的例子中讲述了如何编译安装和如何配置多实例,并在最后讲述了如何配置主从复制配置.以前开源开发经常将LAMP,就是Linux+Apache+MySQL+PHP,对于一些起步型

开发人员学Linux(9):CentOS7编译安装Git-2.13.1及使用

1.前言在上一篇讲述了如何在CentOS7上编译安装Subversion1.9.5和Apache2.4.25,并与Apache2.4.25集成,达到多个SVN版本库集中授权控制的效果.在传统的企业里面使用SVN来作为源代码版本工具的比例是比较高的,但在一些互联网企业里面很多已经在使用git来作为源代码版本管理工具了.网上关于SVN和Git的比较说明是很多的,其中最重要一个区别就是SVN是集中式的,git是分布式的,比如要查看版本库的历史提交记录,在SVN中必须要在能够连接到SVN服务器才可以,而

开发人员学Linux(14):CentOS7安装配置大数据平台Hadoop2.9.0

1.前言 "大云物移"是当年很火热的一个话题,分别指大数据.云计算.物联网和移动互联网,其中大数据领域谈论得多就是Hadoop.当然Hadoop不代表大数据,而是大数据处理领域的一个比较有名的开源框架而已,通常说的大数据包含了大数据的存放.大数据的分析处理及大数据的查询展示,本篇提到的Hadoop只不过是在其中的大数据的分析处理环节起作用,Apache提供了一个开源全家桶,包括了Hadoop.HBase.Zookeeper.Spark.Hive及Pig等一些框架.不过限于篇幅,本篇只介

开发人员学Linux(2):VirtualBox中安装CentOS7系统设置

上一篇<VirtualBox中安装CentOS7过程记录>中讲述了如何安装VirtualBox和在VirtualBox中安装CentOS7,但是限于篇幅有很多问题没有展开,在本篇将展开介绍VirtualBox和CentOS的设置问题.VirtualBox支持的虚拟机文件类型VDI: Virtual Disk Image,这是VirtualBox默认使用的虚拟机文件类型.VMDK:这是VMware默认使用的虚拟机文件类型.VHD:这是微软出品虚拟机软件默认使用的虚拟机文件类型.在创建虚拟机时选择