zabbix安装配置
一、资源
1.1 环境
名称 | 版本 | 下载地址 |
centos | 7.4 | |
zabbix-server | 3.4.11 | https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.4.11/zabbix-3.4.11.tar.gz |
zabbix-agent | 3.4.11 | |
nginx | 1.15.1 | |
mysql | 5.7 | |
php | 1.15.1 | |
zabbix web GUI | 1.15.1 | |
openssl | 1.0.2o |
- 所有的源码包、压缩包和解压包都放置在 /snow/zabbix/ 目录下
- 所有组件的安装都安装在 /usr/local/ 目录下,用yum方式安装的除外
在被监控的服务器端安装和配置 zabbix agent,版本 zabbix-agent-3.4.11
注意:服务器端和客户端的zabbix版本最好一致,这里都是3.4.11的版本
如果是阿里云服务器的话需要配置安全组 开放5000、 5001等端口
1.2 LAMP/LNMP介绍
zabbix需要LNMP或者LAMP环境
- LAMP:Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,本身都是各自独立的程序,但是因为常被放在一起使用,拥有了越来越高的兼容度,共同组成了一个强大的Web应用程序平台。
- LNMP:LNMP指的是一个基于CentOS/Debian编写的Nginx、PHP、MySQL、phpMyAdmin、eAccelerator一键安装包。可以在VPS、独立主机上轻松的安装LNMP生产环境。
- L:linux
- A:apache
- N:nginx
- M:mysql,mariaDB
- P:php,python,perl
本文采用LNMP环境安装zabbix
二、安装配置
2.1、nginx安装配置
- 安装必要的依赖库等组件
yum -y install zlib pcre pcre-devel openssl openssl-devel
- 创建www用户
useradd -s /sbin/nologin www
- 下载nginx源码包, 版本:nginx-1.15.1
[root@iZ2ze6qralnaqhb67athsaZ zabbix]# cd /snow/zabbix/
[root@iZ2ze6qralnaqhb67athsaZ zabbix]# wget http://nginx.org/download/nginx-1.15.1.tar.gz
[root@iZ2ze6qralnaqhb67athsaZ zabbix]# tar -zxvf nginx-1.15.1.tar.gz
- 下载openssl源码包,版本:openssl-1.0.2o
[root@iZ2ze6qralnaqhb67athsaZ zabbix]# wget https://www.openssl.org/source/openssl-1.0.2o.tar.gz
[root@iZ2ze6qralnaqhb67athsaZ zabbix]# tar -zxvf openssl-1.0.2o.tar.gz
- 进入解压后的nginx目录,开始编译
[root@iZ2ze6qralnaqhb67athsaZ zabbix]# cd /snow/zabbix/nginx-1.15.1
执行
./configure \
--user=www \
--group=www \
--prefix=/usr/local/nginx \
--sbin-path=/usr/local/nginx/sbin/nginx \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--error-log-path=/usr/local/nginx/logs/error.log \
--http-log-path=/usr/local/nginx/logs/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/lock/subsys/nginx \
--with-openssl=/snow/zabbix/openssl-1.0.2o \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_gzip_static_module \
--with-pcre
- 编译安装
[root@iZ2ze6qralnaqhb67athsaZ zabbix]# make
[root@iZ2ze6qralnaqhb67athsaZ zabbix]# make install
2.2 安装mysql
- 删除系统默认安装的mariadb数据库
yum remove mariadb*
- 通过yum源的方式安装MySQL5.7 ,下载MySQL yum源:
[root@iZ2ze6qralnaqhb67athsaZ zabbix]# cd /snow/zabbix
wget http://repo.mysql.com/mysql57-community-release-el7.rpm
rpm -ivh mysql57-community-release-el7.rpm
- 验证yum源已安装:确认有两个源:mysql-community.repo 和mysql-community-source.repo
[root@iZ2ze6qralnaqhb67athsaZ zabbix]# ll /etc/yum.repos.d/ | grep mysql
-rw-r--r-- 1 root root 1838 Apr 27 2017 mysql-community.repo
-rw-r--r-- 1 root root 1885 Apr 27 2017 mysql-community-source.repo
[root@iZ2ze6qralnaqhb67athsaZ zabbix]# yum install mysql-server mysql mysql-devel
- 验证MySQL5.7安装成功
rpm -qa | grep mysql
- 启动mysql服务
systemctl start mysqld
验证mysql启动成功
ps -ef | grep mysqld
- 获取初次安装MySQL后的root的临时密码:
grep "password" /var/log/mysqld.log
- 通过临时密码登录MySQL数据库后后,必须要修改密码,否则无法进行相关数据库的操作。注意新密码要符合密码复杂性要求:最小8位,包含字母大小写,数字和特殊字符
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Your_New_Password';
加粗样式修改完密码之后重新登录一下验证密码无误
2.3 安装php
- 先安装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
- 源码包 编译安装
[root@iZ2ze6qralnaqhb67athsaZ zabbix]# cd /snow/zabbix
wget http://am1.php.net/distributions/php-7.2.3.tar.gz
tar -zxvf php-7.2.3.tar.gz
[root@iZ2ze6qralnaqhb67athsaZ php-7.2.3]# cd /snow/zabbix/php-7.2.3
#编译配置PHP
./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-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
make
make install
- 拷贝两个文件到相关的目录
cp /snow/zabbix/php-7.2.3/php.ini-production /usr/local/php7/lib/php.ini
cp /snow/zabbix/php-7.2.3/sapi/fpm/php-fpm.service /usr/lib/systemd/system/
- 修改nginx配置文件,添加php-fpm的整合配置,如截图:
vim /usr/local/nginx/conf/nginx.conf
- 进入安装好的php7 的目录执行下面命令
[root@iZ2ze6qralnaqhb67athsaZ php-7.2.3]# cd /snow/zabbix/php-7.2.3
cp /usr/local/php7/etc/php-fpm.conf.default php-fpm.conf
cp /usr/local/php7/etc/php-fpm.d/www.conf.default /usr/local/php7/etc/php-fpm.d/www.conf
systemctl start php-fpm.service // 启动php服务
netstat -antlp | grep php //验证php-fpm的启动端口是否为9000
/usr/local/nginx/sbin/nginx -t // 测试nginx是否能正常启动,结果如图能够通过检测
- 启动nginx
/usr/local/nginx/sbin/nginx
systemctl stop firewalld //关闭防火墙
- 验证PHP,创建info.php文件
echo '<?php phpinfo(); ?>' > /usr/local/nginx/html/info.php
- 在客户端输入服务器的IP/info.php,如果网页能打卡正常,说明配置正确
- php配置优化,配置完后重启php-fpm服务
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
----------------------------------------------------------------------------------------------
2.4 安装zabbix server
yum install net-snmp net-snmp-devel curl curl-devel libxml2 libevent libevent-devel //安装zabbix server依赖库
// 下载zabbix server到/snow/zabbix目录下
wget https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.4.11/zabbix-3.4.11.tar.gz
// 解压zabbix源码包
tar zxvf zabbix-3.4.11.tar.gz
- 创建启动zabbix的守护进程的普通用户
groupadd zabbix
useradd -g zabbix zabbix
// /snow/zabbix下获取源码包
wget https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.4.11/zabbix-3.4.11.tar.gz
// 解压
tar zxvf zabbix-3.4.11.tar.gz
//进入解压好的zabbix目录,执行编译
./configure --prefix=/usr/local/zabbix --with-mysql --with-net-snmp --with-libcurl --enable-server --enable-agent --enable-proxy --with-libxml2
- 说明:该zabbix目录包含zabbix server端和web前端 (frontends目录)
- 编译安装
make
make install
- zabbix启动脚本路径默认指向的是/usr/local/sbin路径,而zabbix的安装路是/usr/local/zabbix,因此,需要提前创建如下软链接
ln -s /usr/local/zabbix/sbin/* /usr/local/sbin/
ln -s /usr/local/zabbix/bin/* /usr/local/bin/
- 加粗样式创建zabbix数据库和zabbix的数据库用户
[root@iZ2ze6qralnaqhb67athsaZ ~]# mysql -u root -p
Enter password: // 输入数据库密码
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 21368
Server version: 5.7.28 MySQL Community Server (GPL)
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserv ed.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input state ment.
//密码要符合当前数据库密码策略
mysql> create database zabbix character set utf8 collate utf8_bin;
/*
grant all PRIVILEGES on (*).* to user@'%' identified by 'password';
这里(*)表示允许访问所有库,也可以在这里写库名,则只能访问这个库,并把该数据库的所有表的所有权限给user这个用户,允许这个用户通过任何ip地址(也可限定IP地址,‘%’改成允许的‘IP'),使用指定密码进行连接,配置完后使用命令:flush privileges;使配置生效,刷新mysql的系统权限相关表,否则会出现拒绝访问。重启数据库也能达到这样的效果
*/
//允许所有主机访问zabbix库所有表单
mysql> grant all privileges on zabbix.* to 'zabbix'@'%' identified by 'powerNow2019!!';
mysql> flush privileges;
- zabbix数据导入, 进入zabbix源码包中 database/mysql/ 目录下(本文是/snow/zabbix/zabbix-3.4.11/database/mysql下),登入mysql,再在mysql命令行模式下,按顺序执行以下命令来导入sql
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| zabbix |
+--------------------+
5 rows in set (0.01 sec)
mysql> use zabbix
Database changed
mysql> source /snow/zabbix/zabbix-3.4.11/database/mysql/schema.sql;
mysql> source /snow/zabbix/zabbix-3.4.11/database/mysql/images.sql;
mysql> source /snow/zabbix/zabbix-3.4.11/database/mysql/data.sql;
- 配置zabbix server, 编辑 /usr/local/zabbix/etc/zabbix_server.conf,修改以下配置项
- 拷贝 zabbix_server和zabbix_agentd两个管理脚本,到/etc/init.d目录下
cd /etc/init.d
cp /snow/zabbix/zabbix-3.4.11/misc/init.d/fedora/core/* /etc/init.d/
chmod +x zabbix_server
chmod +x zabbix_agentd
// zabbix服务开机自动启动
chkconfig zabbix_server on
chkconfig zabbix_agentd on
- 启动zabbix server
/etc/init.d/zabbix_server start
或者
systemctl start zabbix_server
- 添加相应的zabbix服务和端口到系统配置文件中
[root@iZ2ze6qralnaqhb67athsaZ ~]# vim /etc/services
----------------------------------------------------------------------------------------------------------------------------
//如果已存在就不需要改动
zabbix-agent 10050/tcp # Zabbix Agent
zabbix-agent 10050/udp # Zabbix Agent
zabbix-trapper 10051/tcp # Zabbix Trapper
zabbix-trapper 10051/udp # Zabbix Trapper
-----------------------------------------------------------------------------------------------------------------------------
三、zabbix_agent安装配置
3.1 server配置 agent server主机名
- agent server服务器添加主机名配置
vi /etc/hosts
--------------------------------------------------------------------------------------------
// 添加agent server等服务器主机名配置
hb2-a-ld-overseas-001 39.106.68.199
iZ2ze6qralnaqhb67athsaZ 39.96.46.193
-----------------------------------------------------------------------------------------------
3.2 zabbix_agent安装配置
- 获取zabbix agent rpm
cd /snow/zabbix
wget http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-agent-3.4.11-1.el7.x86_64.rpm
rpm -ivh zabbix-agent-3.4.11-1.el7.x86_64.rpm
- 安装完成后,生成 /etc/zabbix目录和相关配置文件
- 修改zabbix agent的配置文件zabbix_agentd.conf, 主要项目如下:
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=5
Timeout=30 //最大值是30 超过30启动会报错
Server=xxx.xxx.xxx.xxx //zabbix server IP 地址
StartAgents=3
ServerActive=xxx.xxx.xxx.xxx // zabbix server IP 地址
Hostname=xxx.xxx.xxx.xxx // 一般填写zabbix agent主机名 hostname命令可以查看
Include=/etc/zabbix/zabbix_agentd.d/*.conf
UnsafeUserParameters=1
配置hostname需要特别注意 需要和zabbix图形化界面 配置》主机》创建主机中的主机名称保持一致,也就是说后续添加主机一定要用这里配置的hostname值
- 启动zabbix agent服务
systemctl start zabbix-agent.service
3.3 zabbix server端 安装 zabbix web GUI
- zabbix web GUI:在zabbix 源码包中 frontends/php目录下。拷贝php目录到zabbix安装目录下/usr/local/nginx/html/,并重命名为zabbix
cp -r /snow/zabbix/zabbix-3.4.11/frontends/php /usr/local/nginx/html/zabbix
- 最后确保 mysqld, nginx, zabbix_server, zabbix_agentd 和 php-fpm 这些服务已经正常启动运行。
- 测试 zabbix server 监控是否生效,命令中XXX表示zabbix server IP 地址,如果结果返回一串数字表示测试成功。数字的意思是客户端在线时间时长,单位是:秒
// XXX.XXX.XXX.XXX是 server agent服务器地址
/usr/local/zabbix/bin/zabbix_get -s XXX.XXX.XXX.XXX -p 10050 -k "system.uptime"
3.4 添加php缺少的四个功能模块
- 添加在之前完成PHP的安装后缺少的四个功能模块:bcmath,sockets, LDAP和gettext
// 添加LDAP依赖 否则编译配置LDAP的过程中遇到如下图错误,说明还缺少ldap包,执行下面命令解决该错误
[root@iZ2ze6qralnaqhb67athsaZ ~]# yum install autoconf
[root@iZ2ze6qralnaqhb67athsaZ ~]# yum install openldap openldap-devel
[root@iZ2ze6qralnaqhb67athsaZ ~]# cp -frp /usr/lib64/libldap* /usr/lib/
- 这里对bcmath 模块进行配置添加作为例子,其它三个模块配置步骤完全一样,记住一点对哪个模块进行配置就在哪个模块下的目录进行操作。
//安装sockets就进入/snow/zabbix/php-7.2.3/ext/sockets目录下操作
[root@iZ2ze6qralnaqhb67athsaZ bcmath]# cd /snow/zabbix/php-7.2.3/ext/bcmath
[root@iZ2ze6qralnaqhb67athsaZ bcmath]# /usr/local/php7/bin/phpize
/*
*上面命令执行完成后,在当前目录下生成bcmath的configure文件,再执行下面操作
*/
[root@iZ2ze6qralnaqhb67athsaZ bcmath]# ./configure --with-php-config=/usr/local/php7/bin/php-config
[root@iZ2ze6qralnaqhb67athsaZ bcmath]# make
[root@iZ2ze6qralnaqhb67athsaZ bcmath]# make install
[root@iZ2ze6qralnaqhb67athsaZ bcmath]# vim /usr/local/php7/lib/php.ini
--------------------------------------------------------------------------------------------------------
extension_dir = "/usr/local/php7/lib/php/extensions/no-debug-non-zts-20170718"
extension = bcmath.so
---------------------------------------------------------------------------------------------------------
- 把这四个模块都完成编译配置后,最终php.ini里添加的内容如下图
- 注意:PHP编译配置生成的模块放置于下面的目录
/usr/local/php7/lib/php/extensions/no-debug-non-zts-20170718/
- 重启php-fpm服务器,对php.ini所做的配置生效
systemctl restart php-fpm.service
打开浏览器,输入地址zabbix servier ip/zabbix,然后就能进入Zabbix 3.4的web管理配置界面
- 在WEB 界面中,点击 Next Step 按钮,进入如下界面,并输入正确的信息,连接数据库
- 填写zabbix server 的相关信息
- 预览最终配置
- 最后一步有个报错,按照提示,先下载配置文件zabbix.conf.php,然后保存到下面目录。
/usr/local/nginx/html/zabbix/conf/
- 刷新web页面后,显示成功完成web的前端配置。
- 点击finish按钮成功进入界面。输入zabbix的用户名和密码
初始用户名 :Admin
初始密码:zabbix
- 最后成功进入zabbix web GUI 界面!!!
四、 zabbix 汉化
4.1 修改系统配置文件,让web页面支持简体中文显示
- zabbix server端汉化
vi /usr/local/nginx/html/zabbix/include/locales.inc.php #编辑修改
----------------------------------------------------------------------------------------------------
'zh_CN' => array('name' => _('Chinese (zh_CN)'), 'display' => false),
修改为
'zh_CN' => array('name' => _('Chinese (zh_CN)'), 'display' => true),
-----------------------------------------------------------------------------------------------------
4.2 替换监控图像上系统默认的字体
默认字体不支持中文,如果不替换,图像上会显示乱码
- 在Windows系统中的C:\Windows\Fonts目录中复制出一个中文字体文件,例如msyh.ttf
- 把字体文件msyh.ttf上传到/usr/local/nginx/html/zabbix/fonts
- 备份默认的字体文件:DejaVusSans.ttf-bak
- 修改msyh.ttf名称为DejaVusSans.ttf
- zabbixweb页面修改语言环境
五、zabbix添加监控
5.1 添加服务器监控
- 创建主机
- 填写主机相关配置
- 选择服务器监控模板
- 添加具体模板
- 添加之后主机会多一条记录
- 选择群组等 查看监控的信息
5.2 zabbix实时监控mysql业务数据
- 创建/etc/zabbix/scripts/bin目录
mkdir -p /etc/zabbix/scripts/bin
- zabbix agent 编写zabbix查询mysql业务数据脚本
[root@hb2-a-ld-overseas-001 bin]# vi /etc/zabbix/scripts/bin/online.sh
---------------------------------------------------------------------------------------------------------------------------------
#!/bin/bash
HOSTNAME="xxxxxx" #需要查询的业务数据库的ip,不是zabbix_server的数据库
PORT="3306" #连接数据库端口
USERNAME="root" #连接数据库的用户名
PASSWORD="xxxxxx" #连接数据库的密码
DBNAME="cdt" #需要连接的库名
#新加坡上线设备
xjp_online_count="select count(*) from cdt_device_apply where status = 1 and countryId = 2"
mysql -h${HOSTNAME} -p${PASSWORD} -u${USERNAME} -P${PORT} -D ${DBNAME} -e "${xjp_online_count}"
#马来西亚上线设备
mlxy_online_count="select count(*) from cdt_device_apply where status = 1 and countryId = 3"
mysql -h${HOSTNAME} -p${PASSWORD} -u${USERNAME} -P${PORT} -D ${DBNAME} -e "${mlxy_online_count}"
#新加坡已上线设备在线数量
xjp_onlining_count="select count(*) from cdt_device c, (select terminal,countryId,shopName,shopAddr,glat,glng from cdt_device_apply where status = 1 and countryId = 2 )a where c.terminal = a.terminal and c.updateTime > DATE_ADD(NOW(), INTERVAL -30 MINUTE)"
mysql -h${HOSTNAME} -p${PASSWORD} -u${USERNAME} -P${PORT} -D ${DBNAME} -e "${xjp_onlining_count}"
#马来西亚已上线设备在线数量
mlxy_onlining_count="select count(*) from cdt_device c, (select terminal,countryId,shopName,shopAddr,glat,glng from cdt_device_apply where status = 1 and countryId = 3 )a where c.terminal = a.terminal and c.updateTime > DATE_ADD(NOW(), INTERVAL -30 MINUTE)"
mysql -h${HOSTNAME} -p${PASSWORD} -u${USERNAME} -P${PORT} -D ${DBNAME} -e "${mlxy_onlining_count}"
----------------------------------------------------------------------------------------------------------------------------------
- 赋予脚本执行权限
chmod +x online.sh
- 执行脚本,结果如图:
./online.sh
- 创建脚本对应监控配置文件
[root@hb2-a-ld-overseas-001 zabbix]# cd /etc/zabbix/zabbix_agentd.d/
[root@hb2-a-ld-overseas-001 zabbix_agentd.d]# vi userparameter_sql.conf
-----------------------------------------------------------------------------------------------------------------------------------------
//UserParameter=后面是key名, ","后面命令获取到的值为key值,2>/dev/null输出至回收站,awk 'NR==2{print $1}'抓取需要的值作为key值<br>
UserParameter=laidian.xjp.online.count, /etc/zabbix/scripts/bin/online.sh 2>/dev/null| awk 'NR==2{print $1}'
UserParameter=laidian.mlxy.online.count, /etc/zabbix/scripts/bin/online.sh 2>/dev/null| awk 'NR==4{print $1}'
UserParameter=laidian.xjp.onlining.count, /etc/zabbix/scripts/bin/online.sh 2>/dev/null| awk 'NR==6{print $1}'
UserParameter=laidian.mlxy.onlining.count, /etc/zabbix/scripts/bin/online.sh 2>/dev/null| awk 'NR==8{print $1}'
-----------------------------------------------------------------------------------------------------------------------------------------
- zabbix server服务器执行命令 验证监控配置
//xxx.xxx.xxx.xxx是zabbix agent服务器地址
/usr/local/zabbix/bin/zabbix_get -s xxx.xxx.xxx.xxx -p 10050 -k laidian.mlxy.online.count
- 创建主机
- 配置主机信息
- 配置监控项
- 添加图形
- 监控信息图形界面