CloudService 发表于 2022-8-8 13:40:24

Zabbix监控的介绍和安装部署

这篇文章为大家带来有关Zabbix的运行框架和安装部署的介绍。文章不仅介绍Zabbix的运行框架和运行组件还详细介绍了Zabbix监控的安装部署,希望大家通过这篇文章能有所收获。
一、Zabbix运行架构Zabbix是一个企业级的分布式开源监控解决方案。它能够监控各种服务器的健康型、网络的稳定性以及各种应用系统的可靠性。当监控出现异常时,Zabbix通过灵活i的告警策咯,可以为任何事件配置基于邮件、短信、微信等告警机制。而这所有的一切,都可以通过Zabbix提供的Web界面进行配置和操作,基于Web的前端页面还提供了出色的报告和数据可视化功能。这些功能和特性使运维人员可以非常轻松的搭建一套功能强大的运维监控管理平台。
Zabbix的运行架构图如下:

从图中可以看出Zabbix主要有几个组件,分别是:
1)zabbix应用组件1)Zabbix ServerZabbix Server是Zabbix的核心组件,是所有配置信息、统计信息和操作数据的核心存储器。它主要负责接收客户端发送的报告信息,同时,所有配置、统计数据及配置操作数据均由其组织进行;
2)Zabbix Database Storage主要用于存储数据,所有配置信息和Zabbix收集到的数据都被存储在数据库中。常用的数据库有Oracle、Mysql等;
3)Zabbix Web界面这是Zabbix提供的GUI接口,通常与Zabbix Server运行在同一台物理服务器上;
4)Zabbix Proxy代理服务器这是一个可选组件,常用于分布监控环境中,代理Server可以代替Zabbix server收集性能和可用性数据,汇总后同一发往Zabbix Server端;
5) Zabbix Agent监控代理Zabbix Agent部署在被监控主机上,能够主动监控本地资源和应用程序,并负责收集数据发送Zabbix Server端或Zabbix Proxy端;
2)Zabbix服务进程根据功能和用途,默认情况下zabbix包含5个进程,如下:
1)zabbix_agentdzabbix_agentd是Zabbix Agent监控代理端守护进程,此进程主要用于收集客户端数据,例如:CPU、内存、硬盘、网络使用情况等信息;
2)Zabbix_getZabbix提供的一个工具,通常在Zabbix server或Zabbix Proxy端执行用来获取远程客户端信息,其实就是Zabbix Server去Zabbix Agent拉取数据的过程。此工具常用排错;
3)Zabbix_senderZabbix提供的一个工具,用于发送数据给Zabbix server或Zabbix Proxy,其实是Zabbix Agent主动发送数据到Zabbix Server的过程,通常用于耗时较长的检查或有大量主机需要监控的场景;
4)Zabbix_proxyZabbix Proxy的代理守护进程,功能类似于Zabbix server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交到Zabbix Server上或等待Zabbix server主动收集;
5)Zabbix_java_gatewayZabbix 2.0版本后引入的一个功能,主要用于监控JAVA应用环境,类似于Zabbix_agentd进程。需要注意的是,它只能主动去推送数据,而不可以等待zabbix server或zabbix proxy来拉取数据。它的数据最终会给到zabbix server或zabbix proxy上;
6)Zabbix_serverZabbix server是整个Zabbix系统的核心进程。其他进程所收集到的数据最终都会被提交到Zabbix Server上进行统一的处理。
3)Zabbix监控术语在Zabbix监控提供系统中,有一些常用的术语,下面开始简单介绍以下:
1) 主机(host)表示要监控的一台服务器或网络设备,可以通过IP或主机名来指定;
2)主机组(host group)主机的逻辑组:包含主机和模板,但同一个主机组内的主机和模板没有任何直接的关系;主机组通常在给用户或用户组指派监控权限时使用;
3)监控项(item)表示一个监控的具体对象,例如监控服务器的CPU负载、磁盘空间等。item是Zabbix进程数据收集的核心,相对某个监控对象,每个item都由“key”来标识;
4)触发器(trigger)用于评估某监控对象接收到的数据是否在合理范围内;如果接收的数据大于阈值时,触发器的状态将从“OK”变为“Problem”;当接收到数据低于阈值时,又将状态变为“OK”状态;
5)应用集(Applications)一组监控组成的逻辑集合;
6)动作(action)指对于监控中出现的问题事先定义的处理方法。例如发送通知、何时执行操作,执行的频率等;
7)报警媒介类型(media)表示发送通知的手段,告警通知的途径。例如Email、邮件等;
8)模板(template)一组可以被应用到一个或多个主机上的实体集合,一个模板通常包含了应用集、监控项、触发器、图形、聚合图形、自动发现机制、Web场景等几个项目;模板可以直接连接到某个主机;
模板时学习Zabbix的一个难点和重点,为了实现批量、自动化监控,通常会将具有相同特征的监控项汇总到模板中,然后在主机中直接引用即可,实现快速监控部署。
二、安装部署Zabbix监控平台Zabbix的安装部署非常简单,官方提供四种安装途径,分别是二进制RPM包安装、源码安装、容器安装、虚拟机镜像安装。根据学习方式和运维经验。推荐使用源码安装zabbix server,通过RPM包安装Zabbix_agent。
Zabbix web端是基于Apache或Nginx服务和PHP脚本语言进行构建的,要求Apache的版本为1.3.12以上的版本、PHP的版本为5.4.0以上的版本,同时对PHP扩展包也有要求,例如GD要求2.0以上的版本、libXML要求2.6.15以上的版本。
Zabbix的数据存储支持多种数据库,比如Mysql、Oracle、PostgreSQL等,本次采用Mysql数据库。Zabbix对Mysql的要求必须是5.0.3以上的版本,同时需要InnoDB引擎。
1)部署LNMP环境1)部署Nginx本次使用nginx最新稳定版本1.14.1。
# yum -y install zlib pcre pcre-devel openssl openssl-devel# wget http://nginx.org/download/nginx-1.14.1.tar.gz# useradd -s /sbin/nologin www# tar zxf nginx-1.14.1.tar.gz -C /usr/src# cd /usr/src/nginx-1.14.1/# ./configure --prefix=/usr/local/nginx --user=www --group=www \ --with-http_stub_status_module --with-http_ssl_module --with-pcre \ --with-http_gzip_static_module && make && make install# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin2)部署Mysql# wget https://repo.mysql.com/mysql57-community-release-el7.rpm# rpm -ivh mysql57-community-release-el7.rpm # yum -y install mysql mysql-server mysql-devel# systemctl start mysqld# ss -lnt | grep 3306LISTEN ??0 ??80 ????:::3306 ?????????:::* ????????yum安装mysql数据库后,会随机生成一个临时的密码,可以通过以下命令进行查看:
# grep password /var/log/mysqld.log 2020-01-24T14:35:59.600458Z 1 A temporary password is generated for root@localhost: G#rbsu9r_Z6y# mysql -u root -pG#rbsu9r_Z6ymysql> set global validate_password_policy=0;mysql> set global validate_password_length=6;mysql> set password=password('123456');//更改密码为1234563)安装PHP并优化# yum -y install libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel curl curl-devel openssl openssl-devel openldap openldap-devel# wget https://www.php.net/distributions/php-7.2.3.tar.gz# tar zxf php-7.2.3.tar.gz -C /usr/src# cd /usr/src/php-7.2.3/# ./configure --prefix=/usr/local/php7 --enable-fpm \ --with-fpm-user=www --with-fpm-group=www --with-pdo-mysql=mysqlnd \ --with-mysqli=mysqlnd --with-zlib --with-curl --with-gd --with-gettext \ --enable-bcmath --enable-sockets --with-jpeg-dir \ --with-png-dir --with-freetype-dir --with-openssl --enable-mbstring \ --enable-xml --enable-session --enable-ftp --enable-pdo --enable-tokenizer \ --enable-zip && make && make install # cp php.ini-production /usr/local/php7/lib/php.ini# cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/# vim /usr/local/php7/lib/php.ini post_max_size = 16Mmax_execution_time = 300memory_limit = 128Mmax_input_time = 300date.timezone = Asia/Shanghai# vim /usr/local/nginx/conf/nginx.conf ???location ~ \.php$ { ?????root ?????html; ?????fastcgi_pass ?127.0.0.1:9000; ?????fastcgi_index index.php; ?????fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name; ?????include ???fastcgi_params; ???}# cp php-fpm.conf.default php-fpm.conf# cp php-fpm.d/www.conf.default php-fpm.d/www.conf# systemctl daemon-reload# systemctl start php-fpm# nginx# ss -lnt | grep 9000LISTEN ??0 ??128 ?127.0.0.1:9000 ??????????*:* ????????# ss -lnt | grep 80LISTEN ??0 ??128 ????*:80 ???????????*:* ????????LISTEN ??0 ??80 ????:::3306 ?????????:::* ???2)编译安装zabbix1)安装zabbix# yum -y install net-snmp net-snmp-devel curl curl-devel libevent libevent-devel# groupadd zabbix# useradd -g zabbix zabbix# wget zabbix-4.0.0.tar.gz%5broot@zabbix ~]# tar zxf zabbix-4.0.0.tar.gz -C /usr/src# cd /usr/src/zabbix-4.0.0/# ./configure --prefix=/usr/local/zabbix --with-mysql \ --with-net-snmp --with-libcurl --enable-server --enable-agent --enable-proxy \ --enable-java --with-libxml2 && make && make install# ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/# ln -s /usr/local/zabbix/bin/* /usr/local/bin/2)创建数据库和初始化表zabbix serve需要mysql数据库的支持!
# mysql -u root -p123456mysql> create database zabbix character set utf8 collate utf8_bin;mysql> grant all privileges on zabbix.* to zabbix@'192.168.1.%' identified by 'zabbix';mysql> flush privileges;# cd /usr/src/zabbix-4.0.0/database/mysql/# mysql -u root -p123456mysql> source schema.sql;mysql> source images.sql;mysql> source data.sql;//导入zabbix源码包下对应的MySQL的sql语句3)配置zabbix server端# vim /usr/local/zabbix/etc/zabbix_server.confListenPort=10051LogFile=/tmp/zabbix_server.logDBHost=192.168.1.10DBName=zabbixDBUser=zabbixDBPassword=zabbixListenIP=0.0.0.0StartPollers=5StartTrappers=10StartDiscoverers=10AlertScriptsPath=usr/local/zabbix/share/zabbix/alertscripts# cp /usr/src/zabbix-4.0.0/misc/init.d/fedora/core/zabbix_server /etc/init.d/zabbix_server# cp /usr/src/zabbix-4.0.0/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/zabbix_agentd# chmod +x /etc/init.d/zabbix_server # chmod +x /etc/init.d/zabbix_agentd # chkconfig zabbix_server on# chkconfig zabbix_agentd on# /etc/init.d/zabbix_server start//启动过程中,如果因为libmysqlclient.so这个文件报错,导致无法启动,需进行以下操作# find / -name libmysqlclient.so/usr/lib64/mysql/libmysqlclient.so# echo "/usr/lib64/mysql" >> /etc/ld.so.conf# ldconfig # /etc/init.d/zabbix_server start# ss -lnt | grep 10051LISTEN ??0 ??128 ????*:10051 ?????????*:* ????????4)部署zabbix agent开启另一台服务器部署zabbix agent,zabbix agent采用RPM包的方式进行安装!
# wget http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.0-2.el7.x86_64.rpm# rpm -ivh zabbix-agent-4.0.0-2.el7.x86_64.rpm # vim /etc/zabbix/zabbix_agentd.conf PidFile=/var/run/zabbix/zabbix_agentd.pidLogFile=/var/log/zabbix/zabbix_agentd.logServer=192.168.1.10StartAgents=3ServerActive=192.168.1.10Hostname=192.168.1.8Include=/etc/zabbix/zabbix_agentd.d/*.confUnsafeUserParameters=1 ????????//启用agent端自定义item功能,设置参数为1,表示启用!可以使用UserParameter指令# systemctl start zabbix-agent5)安装zabbix gui需在zabbix server端进行操作!
# cp -r /usr/src/zabbix-4.0.0/frontends/php/ /usr/local/nginx/html/zabbix客户端访问测试:

解决方法如下:
# ps -ef | grep php# chown -R www:www /usr/local/nginx/html/zabbix/修改完成之后,刷新web页面,如图:

# zabbix_get -s 192.168.1.8 -p 10050 -k "system.uptime"//-s:指定zabbix agent端的IP地址;//-p:指定zabbix agent端的监听端口;//-k:指定监控项;//如果有输出结果,则表示zabbix server可以获取zabbix agent的数据,配置成功!本地使用的windows系统,建议进行如下操作:控制面板→字体→楷体。将字体下载并上传到zabbix server上。
# ls | grep simhei.ttfsimhei.ttf# sed -i 's/DejaVuSans/simhei/g' /usr/local/nginx/html/zabbix/include/defines.inc.php//其中simhei为字库名字,不用写ttf后缀。# mv simhei.ttf /usr/local/nginx/html/zabbix/fonts///这样就可以避免出现中文乱码的问题如果你能读到这里,恭喜你已经对Zabbix监控有了从实践层面最深刻的体会了。如果想阅读更多相关内容的文章,欢迎关注Vecloud行业资讯频道!
页: [1]
查看完整版本: Zabbix监控的介绍和安装部署