这篇文章为大家带来有关Zabbix的运行框架和安装部署的介绍。文章不仅介绍Zabbix的运行框架和运行组件还详细介绍了Zabbix监控的安装部署,希望大家通过这篇文章能有所收获。
Zabbix是一个企业级的分布式开源监控解决方案。它能够监控各种服务器的健康型、网络的稳定性以及各种应用系统的可靠性。当监控出现异常时,Zabbix通过灵活i的告警策咯,可以为任何事件配置基于邮件、短信、微信等告警机制。而这所有的一切,都可以通过Zabbix提供的Web界面进行配置和操作,基于Web的前端页面还提供了出色的报告和数据可视化功能。这些功能和特性使运维人员可以非常轻松的搭建一套功能强大的运维监控管理平台。
Zabbix的运行架构图如下:
从图中可以看出Zabbix主要有几个组件,分别是:
Zabbix Server是Zabbix的核心组件,是所有配置信息、统计信息和操作数据的核心存储器。它主要负责接收客户端发送的报告信息,同时,所有配置、统计数据及配置操作数据均由其组织进行;
主要用于存储数据,所有配置信息和Zabbix收集到的数据都被存储在数据库中。常用的数据库有Oracle、Mysql等;
这是Zabbix提供的GUI接口,通常与Zabbix Server运行在同一台物理服务器上;
这是一个可选组件,常用于分布监控环境中,代理Server可以代替Zabbix server收集性能和可用性数据,汇总后同一发往Zabbix Server端;
Zabbix Agent部署在被监控主机上,能够主动监控本地资源和应用程序,并负责收集数据发送Zabbix Server端或Zabbix Proxy端;
根据功能和用途,默认情况下zabbix包含5个进程,如下:
zabbix_agentd是Zabbix Agent监控代理端守护进程,此进程主要用于收集客户端数据,例如:CPU、内存、硬盘、网络使用情况等信息;
Zabbix提供的一个工具,通常在Zabbix server或Zabbix Proxy端执行用来获取远程客户端信息,其实就是Zabbix Server去Zabbix Agent拉取数据的过程。此工具常用排错;
Zabbix提供的一个工具,用于发送数据给Zabbix server或Zabbix Proxy,其实是Zabbix Agent主动发送数据到Zabbix Server的过程,通常用于耗时较长的检查或有大量主机需要监控的场景;
Zabbix Proxy的代理守护进程,功能类似于Zabbix server,唯一不同的是它只是一个中转站,它需要把收集到的数据提交到Zabbix Server上或等待Zabbix server主动收集;
Zabbix 2.0版本后引入的一个功能,主要用于监控JAVA应用环境,类似于Zabbix_agentd进程。需要注意的是,它只能主动去推送数据,而不可以等待zabbix server或zabbix proxy来拉取数据。它的数据最终会给到zabbix server或zabbix proxy上;
Zabbix server是整个Zabbix系统的核心进程。其他进程所收集到的数据最终都会被提交到Zabbix Server上进行统一的处理。
在Zabbix监控提供系统中,有一些常用的术语,下面开始简单介绍以下:
表示要监控的一台服务器或网络设备,可以通过IP或主机名来指定;
主机的逻辑组:包含主机和模板,但同一个主机组内的主机和模板没有任何直接的关系;主机组通常在给用户或用户组指派监控权限时使用;
表示一个监控的具体对象,例如监控服务器的CPU负载、磁盘空间等。item是Zabbix进程数据收集的核心,相对某个监控对象,每个item都由“key”来标识;
用于评估某监控对象接收到的数据是否在合理范围内;如果接收的数据大于阈值时,触发器的状态将从“OK”变为“Problem”;当接收到数据低于阈值时,又将状态变为“OK”状态;
一组监控组成的逻辑集合;
指对于监控中出现的问题事先定义的处理方法。例如发送通知、何时执行操作,执行的频率等;
表示发送通知的手段,告警通知的途径。例如Email、邮件等;
一组可以被应用到一个或多个主机上的实体集合,一个模板通常包含了应用集、监控项、触发器、图形、聚合图形、自动发现机制、Web场景等几个项目;模板可以直接连接到某个主机;
模板时学习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引擎。
本次使用nginx最新稳定版本1.14.1。
[root@zabbix ~]# yum -y install zlib pcre pcre-devel openssl openssl-devel
[root@zabbix ~]# wget http://nginx.org/download/nginx-1.14.1.tar.gz
[root@zabbix ~]# useradd -s /sbin/nologin www
[root@zabbix ~]# tar zxf nginx-1.14.1.tar.gz -C /usr/src
[root@zabbix ~]# cd /usr/src/nginx-1.14.1/
[root@zabbix 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
[root@zabbix nginx-1.14.1]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin
[root@zabbix ~]# wget https://repo.mysql.com/mysql57-community-release-el7.rpm
[root@zabbix ~]# rpm -ivh mysql57-community-release-el7.rpm
[root@zabbix ~]# yum -y install mysql mysql-server mysql-devel
[root@zabbix ~]# systemctl start mysqld
[root@zabbix etc]# ss -lnt | grep 3306
LISTEN 0 80 :::3306 :::*
yum安装mysql数据库后,会随机生成一个临时的密码,可以通过以下命令进行查看:
[root@zabbix ~]# grep password /var/log/mysqld.log
2020-01-24T14:35:59.600458Z 1 [Note] A temporary password is generated for root@localhost: G#rbsu9r_Z6y
[root@zabbix ~]# mysql -u root -pG#rbsu9r_Z6y
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=6;
mysql> set password=password('123456');
//更改密码为123456
[root@zabbix ~]# 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
[root@zabbix ~]# wget https://www.php.net/distributions/php-7.2.3.tar.gz
[root@zabbix ~]# tar zxf php-7.2.3.tar.gz -C /usr/src
[root@zabbix ~]# cd /usr/src/php-7.2.3/
[root@zabbix 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
[root@zabbix php-7.2.3]# cp php.ini-production /usr/local/php7/lib/php.ini
[root@zabbix php-7.2.3]# cp sapi/fpm/php-fpm.service /usr/lib/systemd/system/
[root@zabbix php-7.2.3]# vim /usr/local/php7/lib/php.ini
post_max_size = 16M
max_execution_time = 300
memory_limit = 128M
max_input_time = 300
date.timezone = Asia/Shanghai
[root@zabbix php-7.2.3]# 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;
}
[root@zabbix etc]# cp php-fpm.conf.default php-fpm.conf
[root@zabbix etc]# cp php-fpm.d/www.conf.default php-fpm.d/www.conf
[root@zabbix etc]# systemctl daemon-reload
[root@zabbix etc]# systemctl start php-fpm
[root@zabbix etc]# nginx
[root@zabbix etc]# ss -lnt | grep 9000
LISTEN 0 128 127.0.0.1:9000 *:*
[root@zabbix etc]# ss -lnt | grep 80
LISTEN 0 128 *:80 *:*
LISTEN 0 80 :::3306 :::*
[root@zabbix ~]# yum -y install net-snmp net-snmp-devel curl curl-devel libevent libevent-devel
[root@zabbix ~]# groupadd zabbix
[root@zabbix ~]# useradd -g zabbix zabbix
[root@zabbix ~]# wget https://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/4.0.0/zabbix-4.0.0.tar.gz
[root@zabbix ~]# tar zxf zabbix-4.0.0.tar.gz -C /usr/src
[root@zabbix ~]# cd /usr/src/zabbix-4.0.0/
[root@zabbix 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
[root@zabbix zabbix-4.0.0]# ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/
[root@zabbix zabbix-4.0.0]# ln -s /usr/local/zabbix/bin/* /usr/local/bin/
zabbix serve需要mysql数据库的支持!
[root@zabbix ~]# mysql -u root -p123456
mysql> 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;
[root@zabbix ~]# cd /usr/src/zabbix-4.0.0/database/mysql/
[root@zabbix mysql]# mysql -u root -p123456
mysql> source schema.sql;
mysql> source images.sql;
mysql> source data.sql;
//导入zabbix源码包下对应的MySQL的sql语句
[root@zabbix ~]# vim /usr/local/zabbix/etc/zabbix_server.conf
ListenPort=10051
LogFile=/tmp/zabbix_server.log
DBHost=192.168.1.10
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
ListenIP=0.0.0.0
StartPollers=5
StartTrappers=10
StartDiscoverers=10
AlertScriptsPath=usr/local/zabbix/share/zabbix/alertscripts
[root@zabbix ~]# cp /usr/src/zabbix-4.0.0/misc/init.d/fedora/core/zabbix_server /etc/init.d/zabbix_server
[root@zabbix ~]# cp /usr/src/zabbix-4.0.0/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/zabbix_agentd
[root@zabbix ~]# chmod +x /etc/init.d/zabbix_server
[root@zabbix ~]# chmod +x /etc/init.d/zabbix_agentd
[root@zabbix ~]# chkconfig zabbix_server on
[root@zabbix ~]# chkconfig zabbix_agentd on
[root@zabbix ~]# /etc/init.d/zabbix_server start
//启动过程中,如果因为libmysqlclient.so这个文件报错,导致无法启动,需进行以下操作
[root@zabbix ~]# find / -name libmysqlclient.so
/usr/lib64/mysql/libmysqlclient.so
[root@zabbix ~]# echo "/usr/lib64/mysql" >> /etc/ld.so.conf
[root@zabbix ~]# ldconfig
[root@zabbix ~]# /etc/init.d/zabbix_server start
[root@zabbix ~]# ss -lnt | grep 10051
LISTEN 0 128 *:10051 *:*
开启另一台服务器部署zabbix agent,zabbix agent采用RPM包的方式进行安装!
[root@agent ~]# wget http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.0-2.el7.x86_64.rpm
[root@agent ~]# rpm -ivh zabbix-agent-4.0.0-2.el7.x86_64.rpm
[root@agent ~]# vim /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
Server=192.168.1.10
StartAgents=3
ServerActive=192.168.1.10
Hostname=192.168.1.8
Include=/etc/zabbix/zabbix_agentd.d/*.conf
UnsafeUserParameters=1 //启用agent端自定义item功能,设置参数为1,表示启用!可以使用UserParameter指令
[root@agent ~]# systemctl start zabbix-agent
需在zabbix server端进行操作!
[root@zabbix ~]# cp -r /usr/src/zabbix-4.0.0/frontends/php/ /usr/local/nginx/html/zabbix
客户端访问测试:
解决方法如下:
[root@zabbix ~]# ps -ef | grep php
[root@zabbix ~]# chown -R www:www /usr/local/nginx/html/zabbix/
修改完成之后,刷新web页面,如图:
[root@zabbix ~]# 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上。
[root@zabbix ~]# ls | grep simhei.ttf
simhei.ttf
[root@zabbix ~]# sed -i 's/DejaVuSans/simhei/g' /usr/local/nginx/html/zabbix/include/defines.inc.php
//其中simhei为字库名字,不用写ttf后缀。
[root@zabbix ~]# mv simhei.ttf /usr/local/nginx/html/zabbix/fonts/
//这样就可以避免出现中文乱码的问题
如果你能读到这里,恭喜你已经对Zabbix监控有了从实践层面最深刻的体会了。如果想阅读更多相关内容的文章,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。