xiaonao00 2020-04-15
Zabbix的运行架构如下:
从上面的运行架构图可以看到,Zabbix主要有几个组件构成,分别如下:
1、Zabbix Server Zabbix Server是Zabbix的核心组件,是所有配置信息、统计信息和操作数据的核心存储器。它主要负责接收客户端发送的报告和信息,同时,所有配置、统计数据及配置操作数据均由其组织进行。 2、Zabbix Database Storage 主要用于存储数据,所有配置信息和Zabbix收集到的数据都被存储在数据库中。可以使用MySQL、oracle、SQLite等。 3、Zabbix Web界面 这是Zabbix提供的GUI接口,通常(但不一定)与Zabbix Server运行在同一台物理机器上。 4、Zabbix Proxy 代理服务器 这是一个可选组件,常用于分布式监控环境中,代理Server可以替Zabbix收集新能和可用性数据,汇总后统一发往Zabbix Server端。 5、Zabbix Agent 监控代理 Zabbix Agent部署在被监控的主机上,能够主动监控本地资源和应用程序,并负责收集数据发往Zabbix Server端或Zabbix Proxy端。 二、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、Jabber或SMS等。 8、模板(template) 一组可以被应用到一个或多个主机上的实现集合,一个模板通常包含了应用集、监控项、触发器、图形、聚合图形、自动发现规则、web场景等几个项目;模板可以直接链接到某个主机。 模板是学习zabbix的一个难点和重点,为了实现批量、自动化监控,通常会将具有相同特征的监控项汇总到模板中,然后在主机中直接引用即可,实现快速监控部署。
三、部署Zabbix监控平台
Zabbix的监控平台部署比较简单,前提是准备好LNMP或LAMP环境
我这里将从部署LNMP环境开始配置。
注:我这里将所有服务部署在同一台服务器上,仅仅是一个简单的监控架构,并没有部署 zabbix proxy等。
Zabbix官方的相关链接:
Zabbix 4.2 配置文档:https://www.zabbix.com/documentation/4.2/manual/it_services
所需软件包:https://pan.baidu.com/s/1UzzoFUuR84U2ccDf1qW2UQ
提取码:grhh
1、部署Nginx
[ /]# mkdir /zabbix # 个人习惯,可忽略 [ /]# cd zabbix/ [ zabbix]# rz # shangchaun上传所需源码包 [ zabbix]# tar zxf nginx-1.14.0.tar.gz [ zabbix]# tar zxf pcre-8.39.tar.gz -C /usr/src/ [ zabbix]# tar zxf zlib-1.2.8.tar.gz -C /usr/src/ [ zabbix]# cd nginx-1.14.0/ [ nginx-1.14.0]# yum -y install pcre-devel openssl-devel zlib-devel [ zabbix]# cd nginx-1.14.0/ [ nginx-1.14.0]# useradd -s /sbin/nologin -M www [ nginx-1.14.0]# ./configure --prefix=/usr/local/nginx --with-http_dav_module --with-http_stub_status_module --with-http_addition_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-pcre=/usr/src/pcre-8.39 --with-zlib=/usr/src/zlib-1.2.8 --with-http_ssl_module --with-http_gzip_static_module --user=www --group=www && make && make install [ /]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ [ /]# vim /usr/local/nginx/conf/nginx.conf server { listen 80; location / { root html; index index.php index.html index.htm; #添加index.php } #注意删除下面段落的注释符号 location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; include fastcgi.conf; #修改此行 } [ /]# netstat -anput |grep 80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 46551/nginx: master [ /]# cat > /usr/local/nginx/html/index.php << EOF # 创建测试文件 > <?php > phpinfo(); > ?> > EOF
2、部署PHP
[ /]# yum -y install libxml2-devel openssl-devel bzip2-devel libcurl-devel libjpeg-devel libpng-devel freetype-devel # 安装依赖包 [ /]# cd /zabbix/ [ zabbix]# tar zxf libmcrypt-2.5.7.tar.gz [ zabbix]# cd libmcrypt-2.5.7/ [ libmcrypt-2.5.7]# ./configure --prefix=/usr/local/libmcrypt && make && make install # 编译并安装 [ libmcrypt-2.5.7]# cd .. [ zabbix]# tar zxf php-5.6.27.tar.gz [ php-5.6.27]# ./configure --prefix=/usr/local/php5.6 --with-config-file-path=/etc --with-mysql=mysqlnd --with-mysqli=mysqlnd --with-gd --with-iconv --with-libxml-dir=/usr --with-mhash --with-mcrypt=/usr/local/libmcrypt --with-config-file-scan-dir=/etc/php.d --with-bz2 --with-zlib --with-freetype-dir --with-png-dir --with-jpeg-dir --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-fpm --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-curl && make && make install [ php-5.6.27]# cp php.ini-production /etc/php.ini [ php-5.6.27]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm [ php-5.6.27]# chmod +x /etc/init.d/php-fpm [ php-5.6.27]# chkconfig --add php-fpm [ php-5.6.27]# chkconfig php-fpm on [ php-5.6.27]# cp /usr/local/php5.6/etc/php-fpm.conf.default /usr/local/php5.6/etc/php-fpm.conf [ php-5.6.27]# cd / [ /]# sed -i ‘s/pm.max_children = 5/pm.max_children = 50/g‘ /usr/local/php5.6/etc/php-fpm.conf [ /]# sed -i ‘s/pm.start_servers = 2/pm.start_servers = 5/g‘ /usr/local/php5.6/etc/php-fpm.conf [ /]# sed -i ‘s/pm.min_spare_servers = 1/pm.min_spare_servers = 5/g‘ /usr/local/php5.6/etc/php-fpm.conf [ /]# sed -i ‘s/pm.max_spare_servers = 3/pm.max_spare_servers = 35/g‘ /usr/local/php5.6/etc/php-fpm.conf [ /]# service php-fpm start # 启动php Starting php-fpm done [ /]# netstat -anput | grep 9000 tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 60347/php-fpm: mast
客户端访问定义的php页面:
3、安装及配置MySQL数据库
[ ~]# sh mysql.sh # 执行脚本,等待一会出现如下提示表示安装成功 Starting MySQL. SUCCESS! mysql: [Warning] Using a password on the command line interface can be insecure. [ ~]# mysql -uroot -p123 #登录MySQL mysql> create database zabbix character set utf8; mysql> grant all on zabbix.* to ‘localhost‘ identified by ‘123.com‘; mysql> grant all on zabbix.* to ‘192.168.171.%‘ identified by ‘123.com‘; mysql> exit
4、部署zabbix服务
[ zabbix]# tar zxf fping-3.12.tar.gz [ zabbix]# tar zxf zabbix-3.2.1.tar.gz [ zabbix]# cd fping-3.12/ [ fping-3.12]# ./configure && make && make install [ fping-3.12]# cd ../zabbix-3.2.1/ [ zabbix-3.2.1]# useradd -M -s /sbin/nologin zabbix [ zabbix-3.2.1]# chown zabbix:zabbix /usr/local/sbin/fping [ zabbix-3.2.1]# yum -y install net-snmp net-snmp-devel curl-devel java-1.8.0-openjdk java-1.8.0-openjdk-devel OpenIPMI-devel libssh2-devel [ zabbix-3.2.1]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-java --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl --with-openipmi && make && make install #--enable-java:方便后续监控 tomcat 程序所用 #--with-openipmi:用户可以利用 IPMI 监视服务器的物理特征,如温度、电压、风扇工作状态、电源供应等 [ zabbix-3.2.1]# ln -s /usr/local/zabbix/bin/* /usr/local/bin/ [ zabbix-3.2.1]# ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/ #导入zabbix数据到MySQL,注意导入的顺序,如果导入后返回提示信息,可忽略,是因为导入的命令将密码展示在了终端 [ zabbix-3.2.1]# pwd /zabbix/zabbix-3.2.1 [ zabbix-3.2.1]# cd database/mysql/ [ mysql]# mysql -u zabbix -p123.com -h localhost zabbix < schema.sql mysql: [Warning] Using a password on the command line interface can be insecure. [ mysql]# mysql -u zabbix -p123.com -h localhost zabbix < images.sql mysql: [Warning] Using a password on the command line interface can be insecure. [ mysql]# mysql -u zabbix -p123.com -h localhost zabbix < data.sql mysql: [Warning] Using a password on the command line interface can be insecure. [ mysql]# chown -R zabbix:zabbix /usr/local/zabbix/
5、优化zabbix并启动
#修改zabbix配置文件 [ /]# sed -i ‘s/# ListenPort=10051/ListenPort=10051/g‘ /usr/local/zabbix/etc/zabbix_server.conf [ /]# sed -i ‘s/LogFile=\/tmp\/zabbix_server.log/LogFile=\/usr\/local\/zabbix\/logs\/zabbix_server.log/g‘ /usr/local/zabbix/etc/zabbix_server.conf [ /]# sed -i ‘s/# PidFile=\/tmp\/zabbix_server.pid/PidFile=\/usr\/local\/zabbix\/logs\/zabbix_server.pid/g‘ /usr/local/zabbix/etc/zabbix_server.conf [ /]# sed -i ‘s/# DBHost=localhost/DBHost=localhost/g‘ /usr/local/zabbix/etc/zabbix_server.conf [ /]# sed -i ‘s/# DBPassword=/DBPassword=123.com/g‘ /usr/local/zabbix/etc/zabbix_server.conf [ /]# sed -i ‘s/# DBSocket=\/tmp\/mysql.sock/DBSocket=\/usr\/local\/mysql\/mysql.sock/g‘ /usr/local/zabbix/etc/zabbix_server.conf [ /]# sed -i ‘s/# DBPort=3306/DBPort=3306/g‘ /usr/local/zabbix/etc/zabbix_server.conf [ /]# sed -i ‘s/# FpingLocation=\/usr\/sbin\/fping/FpingLocation=\/usr\/local\/sbin\/fping/g‘ /usr/local/zabbix/etc/zabbix_server.conf [ /]# sed -i ‘s/# LogSlowQueries=0/LogSlowQueries=3000/g‘ /usr/local/zabbix/etc/zabbix_server.conf #如果数据库名称和数据库用户没有和我创建的一样,那么还需要更改以下两项 #DBName=zabbix #数据库名称 #DBUser=zabbix #登录数据库的用户名 [ /]# echo "/usr/local/mysql/lib" >> /etc/ld.so.conf [ /]# ldconfig # 刷新上面更改的配置 [ /]# mkdir /usr/local/zabbix/logs [ /]# chown -R zabbix:zabbix /usr/local/zabbix/ [ /]# cd /zabbix/zabbix-3.2.1/misc/init.d/fedora/core [ core]# cp zabbix_agentd /etc/init.d/ [ core]# cp zabbix_server /etc/init.d/ [ core]# sed -i ‘s/BASEDIR=\/usr\/local/BASEDIR=\/usr\/local\/zabbix/g‘ /etc/init.d/zabbix_server [ core]# sed -i ‘s/PIDFILE=\/tmp\/$BINARY_NAME.pid/PIDFILE=\/usr\/local\/zabbix\/logs\/$BINARY_NAME.pid/g‘ /etc/init.d/zabbix_server [ core]# /etc/init.d/zabbix_server start #启动zabbix,也可以执行“zabbix-server”来启动 Reloading systemd: [ OK ] Starting zabbix_server (via systemctl): [ OK ] [ core]# netstat -anput | grep 10051 tcp 0 0 0.0.0.0:10051 0.0.0.0:* LISTEN 74199/zabbix_server [ core]# cd /zabbix/zabbix-3.2.1/frontends/ [ frontends]# cp -r php/ /usr/local/nginx/html/zabbix
6、client访问nginx代理以便配置zabbix
访问Nignx服务器的IP/zabbix即可,它会自动跳转到下面的页面:
上述所显示报错大概是php的配置项不符合其要求:
[ /]# sed -i ‘s/post_max_size = 8M/post_max_size =16M/g‘ /etc/php.ini [ /]# sed -i ‘s/max_execution_time = 30/max_execution_time = 300/g‘ /etc/php.ini [ /]# sed -i ‘s/max_input_time = 60/max_input_time = 300/g‘ /etc/php.ini [ /]# sed -i ‘s/;date.timezone =/date.timezone = Asia\/Shanghai/g‘ /etc/php.ini [ /]# sed -i ‘s/;always_populate_raw_post_data = -1/always_populate_raw_post_data = -1/g‘ /etc/php.ini [ /]# service php-fpm restart # 重启服务 Gracefully shutting down php-fpm . done Starting php-fpm done
又报错,提示无法创建配置文件,让我们手动下载配置文件并上传到指定的目录,那就点击下载
[ /]# ls /usr/local/nginx/html/zabbix/conf/zabbix.conf.php /usr/local/nginx/html/zabbix/conf/zabbix.conf.php
输入zabbix用户名及密码进行登录(默认用户名:admin,密码:zabbix):
7、解决后续制作图表的中文乱码问题
[ ~]# cd /usr/local/nginx/html/zabbix/fonts/ #切换至该目录 [ fonts]# rz [ fonts]# ls DejaVuSans.ttf simkai.ttf [ fonts]# sed -i ‘s/DejaVuSans/simkai/g‘ /usr/local/nginx/html/zabbix/include/defines.inc.php