1.写在前面
本文主要介绍的是zabbix的编译安装过程,包含它的基础环境LNMP,虽然zabbix官方一般推荐的环境是LAMP。以及实现简单的监控任务,在发现问题时能够发送通知邮件。 2.系统环境提前安装好如下两个包组:yum groupinstall "Development Tools" "Server Platform Development"。 3.搭建web服务zabbix作为监控系统需要有图形化的页面呈现给运维人员,它使用web+php的方式来实现。这里首先搭建其需要的web服务。我使用的是nginx-1.10.3的源码包编译安装的方式。相应步骤如下: 在Linux中,通过源码安装的各类软件包的执行程序都可以都通过这种方式放入PATH环境变量中方便使用,且相应的文件不需要赋予执行权限。 更改nginx文件夹属主为nginx chown -R nginx.nginx /usr/local/nginx-1.10.3验证web service
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 --add mysqldchkconfig 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是否启动成功设置mysql root账户密码 mysqladmin -uroot -p<password>然后在使用root用户登录。
5.搭建php-fpm环境6.搭建zabbix server7.建立给zabbix使用的数据库zabbix要实现将其相关的配置信息,监控的信息都存储于后台的数据库中,自然需要建立相应的数据库,并配置相应的账号。zabbix支持多种类型的数据库,这里只以mysql为例,且是在zabbix server上的mysql上需要做的。 修改zabbix server配置文件
源码安装的zabbix,其配置文件默认位于其安装目录的etc目录中,即:/usr/local/zabbix/etc下,server的为zabbix_server.conf,此时修改其连接数据库的相关信息即可,默认连接的数据库即为本机的数据库,数据库即为zabbix,密码为空,所以将密码设置为前面创建的密码即可。 DBPassword=<password>修改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的基础入门,还有很多内容需要在不断的使用中熟悉,也可以参考官网手册,会有很多收获。
原创:天之蓝色 |