郭彬 吴学离 周浩洁
摘要:计算机操作系统的确为系统运维人员提供了丰富的指令集,可以监控到系统所有的状态信息;但是这些都是分立的命令,给出的均是命令行输出,不利于分析和发现问题。Zabbix是一个基于WEB的分布式监控系统开源软件,可以集中监控各种设备运行状态,保障系统安全运营。因此需要为计算机运营系统配置一套Zabbix监控系统运行环境,便于系统运维。目前ARM64架构主机已经可以在计算机系统中承担部分轻量级的业务角色,同时具备更低的系统生成和运营成本,因此我们尝试在ARM64主机上搭建Zabbix集中监控系统。文中给出系统搭建的过程,明确安装过程中需要注意的配置操作,深化对操作系统、关系数据库等相关软件按的认识;最终我们展示了Zabbix系统发布系统的可视化系统运行数据。
关键词:Linux操作系统;ARM架构;Nginx服务;MySQL数据库;Zabbix集中监控系统
中图分类号:TP311 文献标识码:A
文章编号:1009-3044(2020)03-0242-04
1 概述
Zabbix系统由两部分组成,Zabbix_server和Zabbix_agent;Zabbix_server可以通过Agent,SNMP等多种接口方式获取被监控服务器状态;它可以部署在Linux/UNIX等操作系统上;支持Oracle,MySQL和DB2等主流数据库系统;灵活的信息接入方式,支持多种主流操作系统和数据库,兼具易用性和易维护性,这些都是我们选择Zabbix的原因。
配置Zabbix需要事先在相关节点上安装Linux操作系统;运行Zabbix_server的节点需要安装MySQL数据库,毕竟相对于Oracle和DB2而言MySQL是一个轻量级的关系数据库系统,更适用于当前系统应用;Zabbix_server还需要一个web信息发布平台,我们选择Nginx和PHP为其提供web发布功能。综上所述,我们要为Zabbix_server搭建一个完整的LMNP(Linux OS,MySQL,Nginx和PHP)运行环境。
2 系统运行环境描述
ARM主机选用天启科技的AI0-3399J高性能主机,主机上搭载RK3399 64位处理器,安装Ubuntu操作系统,通过操作系统命令uname -nmo: lsb release -d[1]可以杏到系统参数如下:
解读命令输出信息:主机名firefly,aarch64为ARM64处理器指令集,操作系统版本为Ubuntu16 for ARM;同时我们选取一台X86_64架构主机,通过操作系统命令查看系统参数如下:
计划在firefly(ARM64架构)主机上部署Zabbix服务和Agent功能,因此需要在该节点上部署LMNP运行环境;由于本节点具备Agent功能,这样firefly主机提供Zabbix监控服务同时可以监控自身的运行状态;在X86_64主机上仅部署Zabbix的Agent功能,发送主机运行信息到Zabbix服务节点。
3 在系统主机上配置LMNP运行环境
Linux操作系统已经在各个节点上安装,略过。我们从MySQL数据库安装和配置开始。
3.1 在ARM64主机上配置MySQL数据库程序
官网下载mysql-5.7.26.tar.gz源码包,在预设mysql用户家目录下解压和编译MySQL数据程序;在编译MySQL之前需要准备其它相关软件,如boost_1_59_o和cmake等,具体配置选项和编译参考相关技术网站。MySQL程序编译完成之后,配置/etc/my. cnf文件和/etc/init.d/mysqld文件,通过如下命令行程序初始化MySQL数据库
./bin/mysqld -initialize -basedir=/media/nvmeOnl/mysql -datadir=/usr/users/mysqldata[2]
如上述操作成功完成后在输出信息结尾将给出初始的口令,可以通过mysql -u root -p登陆MySQL数据库,进入mysql程序命令行交互界面,执行SQL命令如下:
set password=password(ytdf000)[3];
flush privileges;
更新MySQL数据库root用戶口令并即时生效,本例设置MySQL数据库root用户口令为ytdf000,实际口令设置复杂度需参考系统需求。通过操作系统命令systemctl enable mysqld设置MySQL服务自动启动。
如上述操作完成MySQL数据库软件编译部署和数据库初始化。
3.2 在MySQL数据库系统中生成Zabbixdb数据库
当前步骤需要完成Zabbix应用数据库创建,然后进行Zab-bix应用程序的编译部署。在ARM64主机Ubuntu系统中预设zabbix用户,在用户家目录下部署Zabbix软件;官网下载zab-bix-4.0.13rcl.tar.gz代码包并解压,首先执行Zabbix代码包释放路径下的MySQL脚本,创建Zabbix应用数据库,相关脚本如下:sql是数据库记录脚本;在上述脚本路径位置以MySQL的root用户进入mysql交互命令界面,参考如下步骤:
1)创建zabbixdb数据库
create database zabbixdb character set utf8[3];
2)声明zabbixdb数据库下名为zabbix的用户
grant all on zabbixdb.半 to zabbix@dbsl identified by'ytdf000[3]
本例口令为ytdf000;
3)执行Zabbix数据库系统生成脚本
通过use zabbixdb;命令切换到zabbix数据库,通过source命令执行Zabbix应用数据库脚本,如下:
source schema.sql;
sourcelmages.sql;
source data.sql;
通过终端提示可以验证脚本执行是否正确。可以通过show tables;等命令检查zabbixdb参数表生成情况。
3.3 在ARM64主机上配置Nginx信息发布引擎
官网下载nginx_1.16.1.orig.tar.gz,在解压释放路径下编译Nginx程序,命令如下:
./configure -prefix=/media/nvmeOnl/nginx; make&&makeinstall:
编译完成后需要编辑其配置文件/media/nvmeOn l/nginx/conf/nginx.conf以适应Zabbix的php格式信息发布脚本,修改内容如下:
①第20行log_format main去掉注釋使生效;
②第24行access_log logs/access.log main;去掉注释使生效;
③第44行index后添加index.php;
④第65-71行取消注释,开放有关location - Vphp$的语句块;
在文件安装路径/media/nvmeOnl/nginx/sbin目录下直接执行命令:./nginx—c/media/nvmeOnl/nginx/conf/nginx.conf[4],
通过系统命令简单测试,命令和查询结果如下
验证Nginx进程已经运行;可以在/lib/systemd/system/目录下编辑nginx.serwce文件,通过systemctl指令配置nglnx自动启动,配置文件内容参考其它Nginx相关资料。
3.4 在ARM64主机上编译安装PHP脚本解释程序
官网下载php-7.3.4.tar.gz源码包,并解压编译;编译配置注意结合MySQL并支持php-fpm,具体编译配置选项参考相关技术论坛;编译配置监测过程中可能会提示缺少部分相关程序,可以通过Ubuntu系统的apt-get install联网安装或者通过官网下载代码包编译。运行配置脚本之后通过make&&make in-stall命令编译安装;编译安装完成后将代码路径下的init.d.php-fpm文件拷贝到/etc/init.d路径下,如命令:
cp./s api/fpm/init.d.php-fpm /etc/init. d/php-fpm
通过systemctl enable php-fpm配置服务自动启动,通过systemctl start php-fpm运行php进程管理软件;通过命令
netstat -antp I grep php-fpm检查配置运行情况显示
说明php-fpm运行且监听于9000端口;
在Zabbix配置过程中需要修改php.im部分选项参数,如下表。
上述操作基本完成LNMP的配置。
4 在ARM64主机上编译安装Zabbix软件并配置Zab-bix-server和Zabbix-agent运行
4.1 Zabbix程序的编译生成
在ARM64主机Ubuntu系统中预设zabbix用户,在用户家目录下部署Zabbix软件;官网下载zabbix-4.0.13rcl.tar.gz代码包并解压,在ARM64上Zabbix程序编译需要明确使用zabbix-server和zabbix-agent功能,结合MySQL,net-snmp等系统功能,详细配置参考Zabbix官网和相关论坛;配置完成之后生成编译脚本文件,通过make&&make install编译并且安装。
编译安装之后首先编辑$HOME/etc下的zabbix_agentd.conf和zabbix_ server.conf文件。
4.2 Zabbix编辑Zabbix_server运行配置文件
1)在zbbbix用户家目录下设置tmp目录,设置项LogFile=/media/nvmeOnl/z abbix/tmp/zabbix_server.log保存程序运行日志信息;文中设置PID文件生成路径PidFile=/media/nvmeOnl/zab-bix/tmp/zabbix_server.pid;设置Socket文件生成路径SocketDir=/media/nvmeOnl/zabbix/tmp;
2)已经在MySQL配置过程中于/etc[hosts设置dbsl网络主机名;设置DBHost=dbsl;设置Zabbix数据库名DBName=zab-bixdb,设置访问Zabbixdb数据库用户DBUser=zabbix,访问口令设置DBPassword=ytdf000;
3)设置子配置文件路径项Include=/media/nvmeOnl/z abbix/etc/zabbix_server.conf.d/*.conf
4.3 编辑Zabbix_agent运行配置文件
1)设置日志文件保存路径项为LogFile=/media/nvmeOnl/zabbix/tmp/zabbix_agentd.log;设置PID文件生成路径为PidFile=/media/nvmeOnl/zabbix/tmp/z abbix_agentd.pid;
2)设置提供Zabbix服务节点Server=172.20.82.41,当前为本机IP;若设置Agent为主动工作方式,ServerActive=172.20.82.41,当前对应本机IP;设置Agent主机Hostname=fire-fly,为本机节点名称;与Zabbix信息发布系统配置的host主机列表一致,见下文。
3)设置子配置文件路径项为Include=/media/nvmeOnl/zab-bix/etc/zabbix_agentd.conf. d/*.conf;
4.4 配置Zabbix程序自动运行
完成进程配置文件修改后配置Zabbix服务和Agent进程自动运行,切换到非HO ME/zabbix-4.0.1 3rc l/misc/init.d/debian路径下,确认zabbix-agent和zabbix-server文件内容,特别是DAE-MON路径信息是否正确,如下:
DAEMON=/media/nvmeOnl/zabbix/sbin/$ {NAME)
需要结合实际应用程序所在路径填写;最后拷贝zabbix-agent和zabbix-server到/etc/init. dl路径下,通过systemctl enable命令设置zabbix-server和zabbix-agent自动运行;配置完成执行如下命令
显示zabbix服务和Agent运行;分别监听于10051和10050端口。
5 配置Zabbix信息发布
5.1 将Zabbix信息发布目录配置到Nginx上
在Zabbix用户家目录下,切换路径到$HOME/zabbix-4.0.13 rc l/frontends位置,拷贝php目录到nginx信息发布根目录下,如下命令
cp -rp php /media/nvmeOnl/nginx/html/zabbix,将php目录拷贝成zabbix;在新生成的/media/nvmeOnl/nginxf html/zabbix路径下增加文件phpinfo.php,文件内容为,目的在于调试。
5.2 Zabbix信息发布配置
在运维工作站打开浏览器,输入Nginx服务运行主机地址,本例为http:// 172.20.8 2.4 1/zabbix/setup. php,首次登陆用户为Admin,口令为zabbix,登人后显示如下信息发布图形界面,按照引导操作。
1) Zabbix预配置检查
单击Next Step进入Check of pre-requisites界面,主要是检查php.ini文件配置信息,我们此前做过配置;如果有选项参数仍需要修改,按照提示修改php.im文件中的配置项,然后重新运行php-fpm服务使修改生效;
2)填写Zabbix数据库信息
单击Next Step按钮进入Configure DB Connection,填写数据库类型为MySQL;数据库主机为dbsl;数据库端口为3306;数据库名为zabbixdb;数据库用户为zabbix;数据库登陆口令为ytdf000;上述配置参数均与Zabbix数据库生成部分相对应;
3)填写Zabbix服务器信息
单击Next Step按钮进入Zabbix server details,填写主机写主机名称firefly或IP;端口号填写10051;服务器名称填写主机名称或IP;下一步显示Pre-installation summary(预配置汇总信息);核实无误单击Next Step按钮显示信息提示配置成功。
6 在X86_64架构主机上部署Zabbix agent
6.1 在X86_64架構主机上编译Zabbix软件
在RHEL6.10操作系统中预设zabbix用户,在用户家目录下部署Zabbix软件;软件安装过程与前文所述相似,编译配置命令为:./c onfigure -prefix=/u sr/local/z abbix -enable-agent
通过编译选项仅生成zabbix的agent功能。
6.2 编辑Zabbix_agent运行配置文件
编译安装完成之后,编辑$HOME/etc/zabbix_agentd.conf文件,修改内容如下:
1)在zabbix用户家目录预设tmp目录,设置PID问价生成位置项为PidFile=/u sr/users/zabbix/tmp/z abbix_agentd.pid;设置日志文件保存位置为LogFile=/usr/us ers/zabbix/tmp/z ab -bix_agentd.log;
2)设置提供Zabbix服务节点Server=172.20.82.41,指向Zb-bix server运行节点IP;若设置Agent为主动工作方式,Server-Active=172.20.82.41.指向提供Zabbix服务节点IP;设置Agent主机Hostname=lpdesktop,为本机节点名称;
3)设置子配置文件路径项为Include=/usr/users/zabbix/etc/zabbix_agentd.conf.d/* .conf;
6.3 配置Zabbix_agent服务自动运行
在zabbix代码释放路径下切换到/usr/users/zabbix/zabbix-4.0.13 rc l/misc/init.d/fedora/core路径下,确认zabbix_agentd文件内容路径信息是否正确,如下:
显示zabbix_agentd运行,监听于10050端口。
6.4 在Zabbix信息发布系统中加入lpdesktop主机
1)在Zabbix信息发布系统中加入被监控主机信息
通过浏览器登录我们刚刚配置好的Zabbix信息发布系统,点击第一行菜单中Configuration热点,然后点击第二行菜单的host热点,点击右上Create Host按钮,在弹出的Hosts页面填写新增的主机信息,Hostname项填写被监控主机节点名,在此填写lpdesktop,与前文zabbix_agent。conf文件中Hostname项一致;通过Select按钮选取主机功能所属组,本例为Linux Servers和Zabbix Server;代理接口填写当前主机可以访问Zabbix服务器的网络接口IP,Agent端口号10050;操作完成需要单击Update按钮确认;
2)为被监控主机选取Templates
返回Hosts页面,看到lpdesktop主机已经加上;单击host列表中的lpdesktop主机,再次进入其host设置界面;点击Tem-plates进入Templates配置页面,通过Select选取模板類型;例如本例选择Temlate APP Zabbix Server和Template OS Linux,通过单击ADD按钮加入已连接模板列表,通过Update按钮更新主机信息;
3)为被监控主机设置部署信息
在被监控lpdesktop主机的hosts设置界面,单击Host inven-torv进入主机部署页面,默认状态为Disabled,单击Automated按钮,而后单击页面底部的Update按钮,完成操作返回返回Hosts页面。
完成上述操作就完成了在Zabbix系统中加入一台被监控目标主机的加人工作,通过Hosts页显示主机已经处于Enabled状态。
通过Zabbix浏览页面第一行Monitor按钮进入系统监视页,通过graphs选取图表输出功能;在Group下拉列表选取
Linux servers,在Host下拉列表选取lpdesktop,在Graph下拉列表选取需要查看的内容,效果如下图:
如上图示,说明lpdesktop主机运行状态信息通过自身的Zabbix_agent服务发送到ARM主机的Zabbix_server,再由Nginx信息发布显示到浏览器上,Zabbix agent功能配置完成。
7 总结
我们终于完成了将Zabbix功能部署于ARM主机的工作。实现了对计算机系统的有效监控,同时兼顾监控系统的投入和运营的经济性。需要说明的是Zabbix集中监控系统提供的功能很完备,还可以监视诸如Solaris,AIX和HP-UX等UNIX小型机运行状态,被监控主机仅需要部署Zabbix-agent功能,部署相对简单,资源占用少,不影响服务器自身业务负荷;也可以经由SNMP,JMX和IPMI接口实现对目标主机监控,由于实验环境和篇幅所限不在此叙述。
通过上文我们可以基本了解在LMNP齐备的情况下配置Zabbix服务的过程,同时更深入了解操作系统、关系数据库等相关知识;并且我们验证了ARM64架构处理器的处理能力,完全可以胜任一些轻量级的业务角色。
参考文献:
[1]刘遄.Linux就该这么学[M].北京:人民邮电出版社,2017:47-78,89-96.
[2][美]保罗,迪布瓦(Paul DuBois)著,张雪平,何莉莉,陶虹等译.MySQL技术内幕(第5版).,北京:人民邮电出版社,2015:412-440.
[3]刘增杰.MySQL5.7从入门到精通[M].北京:清华大学出版社,2016:29-36.37-46.47-79.347-365.
[4]高俊峰.高性能Linux服务器构建实战:运维监控、性能调优与集群应用(第1版)[M].北京:机械工业出版社,2012:1-14,22-28.