1.写在前面
本文主要介绍的是zabbix的编译安装过程,包含它的基础环境LNMP,虽然zabbix官方一般推荐的环境是LAMP。以及实现简单的监控任务,在发现问题时能够发送通知邮件。
2.系统环境
提前安装好如下两个包组:yum groupinstall "Development Tools" "Server Platform Development"。
3.搭建web服务
zabbix作为监控系统需要有图形化的页面呈现给运维人员,它使用web+php的方式来实现。这里首先搭建其需要的web服务。我使用的是nginx-1.10.3的源码包编译安装的方式。相应步骤如下:
创建软链接至nginx
默认情况下nginx编译安装的路径(prefix) 是在/usr/local/nginx
,所以创建一个软链接,使用起来更方便:
ln -s /usr/local/nginx-1.10.3/ /usr/local/nginx
将源码安装的nginx执行程序放到PATH环境变量中
在Linux中,通过源码安装的各类软件包的执行程序都可以都通过这种方式放入PATH环境变量中方便使用,且相应的文件不需要赋予执行权限。
4. 搭建mysql服务
zabbix的server和proxy是需要连接数据库的,zabbix支持多种类型的数据库,本文只涉及到mysql。
添加mysql用户
useradd -s /sbin/nologin -M mysql
解压mysql 二进制包到目标文件夹
因为我使用的是名为mysql-5.5.53-linux2.6-x86_64.tar.gz
的压缩包,此包实际是一个mysql的二进制包,相当于从相应平台安装编译好后打包出来的,直接解压以后可以使用,而无需再configure和make&&make install了。操作指令:
tar xf mysql-5.5.53-linux2.6-x86_64.tar.gz -C /usr/local
#解压出来的文件会自动放置于/usr/local/mysql-5.5.53-linux2.6-x86_64中
创建软链接
为后续使用方便,如在脚本中引用路径时更方便,这里还是给它设置一个软链接:
ln -s /usr/local/mysql-5.5.53-linux2.6-x86_64/ /usr/local/mysql
更改mysql文件夹属主为mysql
chown -R mysql.mysql /usr/local/mysql/
初始化mysql数据库
在解压后的mysql目录中有一个scripts目录其中有一个mysql_install_db
的文件,执行它,并指定用户为mysql
,数据目录使用其默认的路径/usr/local/mysql/data
,操作如下:
设置mysql开机自启
mysql目录中有一个support-files目录,其中有一个mysql.server
文件,将其复制到/etc/init.d/
下,并更名为mysqld
:
cp support-files/mysql.server /etc/init.d/mysqld
chkconfig chkconfig mysqld on
提供mysql的配置文件
同样是在support-files
目录中有多种不同类型的mysql配置文件,本文我使用的是my-small.cnf
,将其复制到/etc
目录下,因为我没有设置非常规的basedir和datadir,所以这里可以不用对其进行修改:
cp support-files/my-small.cnf /etc/my.cnf #更名为my.ncf
启动mysql服务
service mysqld start lsof -i :3306
设置mysql root账户密码
mysqladmin -uroot -ppassword>
然后在使用root用户登录。
5.搭建php-fpm环境
6.搭建zabbix server
7.建立给zabbix使用的数据库
zabbix
要实现将其相关的配置信息,监控的信息都存储于后台的数据库中,自然需要建立相应的数据库,并配置相应的账号。zabbix
支持多种类型的数据库,这里只以mysql
为例,且是在zabbix server上的mysql上需要做的。
修改zabbix server配置文件
源码安装的zabbix,其配置文件默认位于其安装目录的etc
目录中,即:/usr/local/zabbix/etc
下,server的为zabbix_server.conf
,此时修改其连接数据库的相关信息即可,默认连接的数据库即为本机的数据库,数据库即为zabbix,密码为空,所以将密码设置为前面创建的密码即可。
DBPassword=
修改zabbix agent的配置文件
文件位置和server的一样,需要修改的地方有如下几处:
很明显分别有针对server和agent的脚本,把它们复制到/etc/init.d/
目录下:
打开这两个文件(zabbix_agentd和zabbix_server)查看其内容,根据实际情况进行修改,一般需要更改的只是如下内容:
将这两个服务安装添加到自启动中:
8.安装zabbix web程序
zabbix对于监控的结果可以通过web页面来进行展示和查看,它需要安装一个使用php程序来运行的web站点,根据zabbix的官方要求,还有如下php的参数需要提前修改:
上述修改都在php.ini
文件中完成。在本文的环境中它位于/usr/local/php/etc/php.ini
。另外需要补充一下,zabbix3.2.4它要求的php版本最低为5.4。 修改完php.ini
文件后,重启php-fpm服务service php-fpm restart
。
安装zabbix web程序操作步骤如下:
创建web站点
在web service的根目录下给zabbix单独创建一个根目录,用于存放zabbix的php程序文件,然后再将源码解压目录中名为frontends/php
目录中的全部内容复制过来。
打开zabbix web完成配置过程
浏览器中输入http://server_ip/zabbix
打开zabbix的web界面,初次打开会显示欢迎界面,此时web程序的安装还没有完成,并不需要登录web站点的用户名和密码,然后点击Next step
可以看到它会进行一个php环境参数的检测,需要它们全部显示为OK
在继续进行下一步,从此步也可以看到很多之前php configure时所enable和with的选项参数,它们都是运行zabbix web程序所要求的。
zabbix 3.2.4 web需求php的环境如下:
php环境检测通过的结果如下图所示:
zabbix web php环境检测通过图1
zabbix web php环境检测通过图2
zabbix web DB配置
zabbix server详细信息
zabbix web安装信息汇总
zabbix web conf install
文件导入完成后,点击Finish
,会出现以下信息,即表示zabbix web安装成功。
zabbix web安装成功提示信息
初始情况下,只配置了让zabbix server监控它自己,下面继续配置一台Linux server,让zabbix server可以监控它,并可以发送监控通知邮件。
9.被监控端安装zabbix agent
安装过程还是使用源码编译安装的方式,先创建zabbix用户。
在被监控的Linunx server上,只需要安装zabbix agent,在configure时使用如下参数即可:
configure完成以后,注意观察汇总信息是否有错误提示,是否只启用了agent,有问题根据实际情况去排查并解决。如果没有错误,则根据提示信息执行make install
完成安装过程。
被监控端设置软链接,添加zabbix执行程序路径至PATH变量,修改zabbix_agentd.conf
文件以及zabbix_agentd服务开机自启的过程参考前文相关内容即可,此处不在赘述。
最后启动被监控端的zabbix_agentd服务。
10.zabbix server上配置监控内容
在zabbix server上配置刚安装了zabbix agent的主机,并设置要监控的内容。
根据实际情况填写主机名,选择主机分组,主机ip,对于主机分组此处我选择Linux servers
作为示例。
然后可以选择Host
旁的Templates
,zabbix内置了很多种不同的模板,它包含的有监控条目item
,告警触发器trigger
,图形展示Graphs
,屏幕Screens
等。以下为给主机应用模板的操作过程:
给主机应用监控模板1
选择相应的监控模板
确认主机是否应用了监控模板
示例中的server3
上我启用的有web服务,所以这里选择了zabbix内置的Template App HTTP Serivice
这一模板对http服务进行监控。 等待片刻,ZBX
会显示成绿色即表示zabbix server能和server3上的zabbix agent正常通信了,如下所示:
zabbix server已可监控到server3
11.配置zabbix server发送通知邮件
zabbix server默认支持多种发送通知的方式,其中就包含的有名为Email
的方式,但经过多次尝试都未能实现让zabbix server发送通知邮件,所以这里使用zabbix调用外部脚本且借助公网smtp服务器的方式来发送通知邮件。详细过程如下:
zabbix自定义media type
建立通知邮件脚本
默认情况下通知邮件脚本应该存放在/usr/local/zabbix/share/zabbix/alertscripts
,直接在这个路径下建立相应的脚本即可,如果脚本不是存放在此处,需要修改zabbix_server.conf
文件中此处# AlertScriptsPath=${datadir}/zabbix/alertscripts
取消掉注释并写上脚本完整的存放路径。mail.sh的内容如下:
定义收件人邮件地址
在zabbix中每个用户可以关联多个Media type
,在这里我给Admin
这一用户关联上前面已经定义好的名为user mail
的Media type,并填上其邮件地址,即zabbix发送邮件通知时的收件人邮件地址。在zabbix web上依次选择Administration
,Users
,Admin
,Media
标签,然后点击Add
,给这一用户定义一个media,此处选择user mail
,如下所示:
给用户关联相应的Media-1
给用户关联相应的Media-2
给用户关联相应的Media-3
定义action名称及触发条件
定义故障时action的具体行为-1
定义故障时action的具体行为-2
定义故障恢复后action的具体行为
查看刚定义的action
从上述过程也可以看到其实这些action定义的是由Trigger来触发的,因为前面我是直接给主机应用了zabbix内置的http service的模板,它里面已经关联的有相应的trigger了,所以当http service发生变化,会自动触发相应的trigger,而后又触发zabbix 执行相应的action。这是zabbix发送通知的一个大致的过程。
定义zabbix发送通知邮件使用的账户
zabbix server本机非合法的smtp服务器,由它直接发送邮件给公网邮箱,会有很多问题,不一定成功。所以这里依然选择使用公网的163 smtp服务器来发送zabbix的通知邮件。因为不需要用到本机的smtp服务,所以可以选择将smtp服务停止,并确保本机有mail程序可用,它由mailx软件包提供。在上面定义通知邮件脚本时就已经用到了mail指令。
本机服务账户配置方法,在/etc/mail.rc
中增加如下内容:
制造告警测试是否正常收到通知邮件
将server3的web service停掉,将近3分钟查看邮件客户端,收到了zabbix发送的通知邮件。这个从故障发生到zabbix发送通知消息的时长,取决于监控的item配置的检测时长和trigger判断条件,默认的http service的检测时长为1分钟,其判断条件为最大连续检测到3次失败即认为http service down,触发相应的trigger,并与相应的action联动,从而发送通知邮件。zabbix发送的通知邮件内容大致如下:
zabbix通知邮件
12.小结
以上即为zabbix实现监控Linux服务器并发送通知邮件的实现过程小记。只是zabbix的基础入门,还有很多内容需要在不断的使用中熟悉,也可以参考官网手册,会有很多收获。
好的内容离不开作者的持续付出,给他一次小小的打赏我们将获得持续不断的有料干货,⬇️美女和帅哥都会至少打赏1元哟⬇️⬇️💰
————五一期间全线课程特惠————
Linux面授班,优惠四重享,4000元大礼包等你拿
Linux网络班,双重优惠出击,最高2000元降价+666元学习资料赠送
Python全栈+Python运维,最高直降2000元+八重大礼
课程详情,请咨询学习顾问:
Linux面授班,报名优惠400元,名额有限,抢完为止!