主机

操作系统

IP

主要软件

服务器

Centos 7.6(X86_64)

172.20.77.201

mysql-5.7.19.tar.gz
php-7.1.24.tar.gz
nginx-1.14.1.tar.gz
zabbix-4.0.2.tar.gz(server端)

客户机

Centos 7.6(X86_64)

172.20.77.202

zabbix-4.0.2.tar.gz(agnetd端)
httpd-2.4.37.tar.gz

 zabbix server服务端的安装与配置 

1.下载zabbix server源码包

[root@localhost src]# wget -O zabbix-4.0.4.tar.gz https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/4.0.4/zabbix-4.0.4.tar.gz/download

2.安装依赖包

[root@localhost src]# yum install -y wget telnet net-tools python-paramiko gcc gcc-c++ dejavu-sans-fonts python-setuptools python-devel sendmail mailx net-snmp net-snmp-devel net-snmp-utils freetype-devel libpng-devel perl unbound libtasn1-devel p11-kit-devel OpenIPMI unixODBC libevent-devel mysql-devel libxml2-devel libssh2-devel OpenIPMI-devel java-1.8.0-openjdk-devel openldap-devel curl-devel unixODBC-devel -y --skip-broken

3.解压zabbix源码包

[root@localhost src]# tar -zxvf zabbix-4.0.4.tar.gz

4.配置编译环境

[root@localhost zabbix-4.0.4]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --enable-java --with-mysql --with-libxml2 --with-unixodbc --with-net-snmp --with-ssh2 --with-openipmi --with-ldap --with-libcurl --with-iconv

源码安装 otp no curse function found_nginx

 5.编译安装

[root@localhost zabbix-4.0.4]# make install

源码安装 otp no curse function found_php_02

 6.查看安装zabbix的版本

[root@localhost zabbix]# /usr/local/zabbix/sbin/zabbix_server -V
zabbix_server (Zabbix) 4.0.4

7.创建数据库(数据库在前面己经安装好了,这里就不做讲解)

[root@localhost zabbix-4.0.4]# mysql -uroot -p12346

mysql> create database zabbix character set utf8 collate utf8_bin;

mysql> grant all privileges on zabbix.* to 'zabbix'@'%' identified by 'zabbix@123456';

mysql>flush privileges;

8.导入数据表

[root@localhost zabbix-4.0.4]# mysql -uzabbix -pzabbix@123456 zabbix < ./database/mysql/schema.sql

[root@localhost zabbix-4.0.4]# mysql -uzabbix -pzabbix@123456 zabbix < ./database/mysql/images.sql

[root@localhost zabbix-4.0.4]# mysql -uzabbix -pzabbix@123456 zabbix < ./database/mysql/data.sql

 9.创建启动zabbix服务的用户

[root@localhost zabbix-4.0.4]# groupadd --system zabbix

[root@localhost zabbix-4.0.4]# useradd --system -g zabbix -d /usr/lib/zabbix -s /sbin/nologin zabbix

10.创建日志目录

[root@localhost zabbix-4.0.4]# mkdir -p /usr/local/zabbix/logs

11.修改目录权限所有者

[root@localhost zabbix-4.0.4]# chown -R zabbix:zabbix /usr/local/zabbix

12.修改zabbix_server配置文件

[root@localhost zabbix-4.0.4]# vi /usr/local/zabbix/etc/zabbix_server.conf

PidFile=/usr/local/zabbix/logs/zabbix_server.pid
LogFile=/usr/local/zabbix/logs/zabbix_server.log
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix@123456

13.修改zabbix_agentd配置文件

[root@localhost zabbix-4.0.4]# vi /usr/local/zabbix/etc/zabbix_agentd.conf
PidFile=/usr/local/zabbix/logs/zabbix_agentd.pid
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=Zabbix server
UnsafeUserParameters=1
[root@localhost zabbix-4.0.4]#

11.启动zabbix_server服务

[root@localhost zabbix-4.0.4]# /usr/local/zabbix/sbin/zabbix_server 

查看zabbix启动服务日志

[root@localhost zabbix-4.0.4]# tail /usr/local/zabbix/logs/zabbix_server.log

报错如下
110468:20200706:122007.979 database is down: reconnecting in 10 seconds
110468:20200706:122017.981 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'

查询日志文件 /var/lib/mysql/mysql.sock,文件不存在

[root@localhost zabbix-4.0.4]# ll /var/lib/mysql/mysql.sock
ls: cannot access /var/lib/mysql/mysql.sock: No such file or directory

在系统中查找mysql.sock文件:

[root@localhost zabbix-4.0.4]# find / -name mysql.sock
/usr/local/mysql/mysql.sock

知道mysql.sock位置,有2种解决办法:

a.做一个mysql.sock的软链接

[root@localhost zabbix-4.0.4]# mkdir -p /var/lib/mysql
[root@localhost zabbix-4.0.4]# ln -s /usr/local/mysql/mysql.sock /var/lib/mysql/mysql.sock

重启mysql服务

[root@localhost zabbix-4.0.4]# service mysql restart
Redirecting to /bin/systemctl restart mysql.service

b.修改zabbix_server.conf中的mysql.sock的配置

[root@localhost zabbix-4.0.4]# vi /usr/local/zabbix/etc/zabbix_server.conf

DBSocket=/usr/local/mysql/mysql.sock

然后重启zabbix_server服务

12.启动客户端服务zabbix_agentd

[root@localhost zabbix-4.0.4]# /usr/local/zabbix/sbin/zabbix_agentd

查看客户端日志

[root@localhost zabbix-4.0.4]# tail -f /usr/local/zabbix/logs/zabbix_agentd.log

源码安装 otp no curse function found_php_03

 

13.设置zabbix服务开机自启动
复制 zabbix 源程序 misc/init.d/tru64 下的启动脚本到 /etc/init.d 目录下

[root@localhost zabbix-4.0.4]# cp /usr/local/src/zabbix-4.0.4/misc/init.d/fedora/core/* /etc/init.d/

#修改启动脚本使其支持 redhat 的 chkconfig,并修改实际路径
#修改服务端启动脚本

[root@localhost zabbix-4.0.4]# vi /etc/init.d/zabbix_server

# Zabbix-Directory
BASEDIR=/usr/local/zabbix  #找到此项并修改为zabbix的安装路径

#修改客户端启动脚本

[root@localhost zabbix-4.0.4]# vi /etc/init.d/zabbix_agentd 

# Zabbix-Directory
BASEDIR=/usr/local/zabbix

加入开机启动项

[root@client zabbix-4.0.4]# chkconfig --add zabbix_server

[root@client zabbix-4.0.4]# chkconfig --add zabbix_agentd

[root@localhost zabbix-4.0.4]# chkconfig zabbix_server on
[[root@localhost zabbix-4.0.4]# chkconfig zabbix_agentd on
[root@localhost zabbix-4.0.4]# chkconfig --list|grep zabbix

zabbix_agentd 0:off 1:off 2:off 3:on 4:on 5:on 6:off

zabbix_server 0:off 1:off 2:off 3:on 4:on 5:on 6:off

重启服务

[root@localhost zabbix-4.0.4]# service zabbix_server restart
Restarting zabbix_server (via systemctl):                  [  OK  ]
[root@localhost zabbix-4.0.4]# service zabbix_agentd restart
Restarting zabbix_server (via systemctl):                  [  OK  ]

14.将zabbix WEB服务程序复制到nginx对应的目录下并修改用户权限

[root@localhost zabbix-4.0.4]# cp -r frontends/php/* /usr/local/nginx/html/

[root@localhost php]# chown -R nginx:nginx /usr/local/nginx/html/

15.通过浏览器配置zabbix服务

#浏览器输入:http://172.20.77.201

源码安装 otp no curse function found_nginx_04

 

 

源码安装 otp no curse function found_mysql_05

#zabbix自动检查安装环境是否满足要求,如果出现不满足要求的情况,需要进一步的处理。这里看到关于PHP有三个参数预检没通过,修改PHP配置文件并重启php服务

[root@localhost etc]# vim /usr/local/php/etc/php.ini

post_max_size = 16M    #修改

max_execution_time = 300   #修改

max_input_time = 300  #修改

date.timezone = Asia/Shanghai   #此行有注释,去注释并修改

mysqli.default_socket = /var/lib/mysql/mysql.sock    #指定php连接mysql的sock路径

 [root@localhost etc]#systemctl restart php-fpm

#重新刷新index.php页面,发现所有fail项已经消失,但是还有一个warning存在

源码安装 otp no curse function found_mysql_06

提示没有安装PHP LDAP模块,为了不影响后面的功能,现在把这个模块重新编译安装进去:

[root@localhost etc]# cd /usr/local/src/php-7.1.24/ext/

[root@localhost ext]# cd ldap

[root@localhost ldap]# /usr/local/php/bin/phpize

Configuring for:

PHP Api Version:         20160303

Zend Module Api No:      20160303

Zend Extension Api No:   320160303

Cannot find autoconf. Please check your autoconf installation and the   #报错提示没有安装autoconf

$PHP_AUTOCONF environment variable. Then, rerun this script.

[root@localhost ldap]# yum install -y autoconf

[root@localhost ldap]# /usr/local/php/bin/phpize  #动态编译 PHP LDAP扩展库

Configuring for:

PHP Api Version:         20160303

Zend Module Api No:      20160303

Zend Extension Api No:   320160303

[root@localhost ldap]# ./configure --with-php-config=/usr/local/php/bin/php-config --with-ldap

............................

checking for stdint.h... (cached) yes

checking for unistd.h... (cached) yes

configure: error: Cannot find ldap libraries in /usr/lib.

[root@localhost ldap]# cp /usr/lib64/libldap* /usr/lib/

[root@localhost ldap]# ./configure --with-php-config=/usr/local/php/bin/php-config --with-ldap 

[root@localhost ldap]# make&&make install

[root@localhost ldap]# vim /usr/local/php/etc/php.ini

extension=ldap.so  #添加此项

[root@localhost ldap]# systemctl restart php-fpm

 #重新刷新index.php页面,发现所有warning项已经消失,点Next继续下一步

源码安装 otp no curse function found_nginx_07

 #此处需要配置zabbix连接数据库的信息,修改完毕点Next继续下一步

源码安装 otp no curse function found_mysql_08

 

 

源码安装 otp no curse function found_php_09

 

源码安装 otp no curse function found_mysql_10

如果提示写入配置文件失败,直接下载配置文件到本地再上传到服务器上

源码安装 otp no curse function found_php_11

[root@localhost ldap]# rz  #将配置文件上传到服务器

[root@localhost ldap]# mv zabbix.conf.php /usr/local/nginx/html/conf/

#刷新一下页面,可以看到配置已完成,且配置信息被保存在了/usr/local/nginx/html/conf/zabbix.conf.php文件中,如果后续需要修改配置,可以直接修改此文件。
#点Finish结束初始化

 

 

源码安装 otp no curse function found_php_12

+

 #完成网页配置

#登录Zabbix网页,默认账号Admin/zabbix

 

源码安装 otp no curse function found_mysql_13

 #登录成功界面如下

源码安装 otp no curse function found_nginx_14

 

 #如果想切换成中文界面

源码安装 otp no curse function found_php_15

 

源码安装 otp no curse function found_mysql_16

 

 #此时界面己经切换成中文了

源码安装 otp no curse function found_mysql_17

 #可以看到己有监控数据的图形出来了

源码安装 otp no curse function found_mysql_18

 

 

源码安装 otp no curse function found_nginx_19

 

 #发现上图有些文字显示中文是乱码的

#这是因为Zabbix使用的DejaVuSan.ttf字体,不支持中文,导致中文出现乱码,它存放的位置是在/usr/local/nginx/html/fonts/DejaVuSans.ttf

#解决办法,使用一个支持中文的字体,如果你手上没有相关字体的文件,最简单的办法就是找Windows系统里面的字体,它的位置一般在C:\Windows\Fonts;
#这里选用常规楷体字(simkai.ttf)上传至服务器/root目录下

[root@localhost ~]# ll simkai.ttf
-rw-r--r--. 1 root root 11785184 Jun 11 2009 simkai.ttf

[root@localhost ~]# mv simkai.ttf /usr/local/nginx/html/fonts/
[root@localhost ~]# cd /usr/local/nginx/html/fonts/
[root@localhost fonts]# mv DejaVuSans.ttf DejaVuSans.ttf.bak
[root@localhost fonts]# mv simkai.ttf DejaVuSans.ttf
[root@localhost fonts]# chown nginx:nginx DejaVuSans.ttf

#重新刷新一下页面,就可以显示中文了

源码安装 otp no curse function found_mysql_20

 zabbix客户端(172.20.77.202)的配置

1.下载zabbix server源码包

[root@client src]# wget -O zabbix-4.0.4.tar.gz https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/4.0.4/zabbix-4.0.4.tar.gz/download

2.安装依赖包

[root@client src]# yum install -y curl curl-devel net-snmp net-snmp-devel prel-DBI gcc gcc-c++

[root@client src]# useradd -M -s /sbin/nologin zabbix

3.解压zabbix源码包

[root@client src]# tar -zxvf zabbix-4.0.4.tar.gz

4.配置编译环境

[root@client src]# cd zabbix-4.0.4/

[root@client zabbix-4.0.4]# ./configure --prefix=/usr/local/zabbix  --enable-agent

5.编译安装

[root@client zabbix-4.0.4]#make install

6.设置zabbix_agentd服务开机自启动
复制 zabbix 源程序 misc/init.d/fedora/core/ 下的启动脚本到 /etc/init.d 目录下

[root@client zabbix-4.0.4]# cp /usr/local/src/zabbix-4.0.4/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/

[root@client zabbix-4.0.4]# vi /etc/init.d/zabbix_agentd

BASEDIR=/usr/local/zabbix

[root@client zabbix-4.0.4]# chkconfig --add zabbix_agentd  #添加服务以便chkconfig可以管理zabbix_agentd

[root@client zabbix-4.0.4]# chkconfig zabbix_agentd on

[root@client zabbix-4.0.4]# chkconfig --list|grep zabbix

 zabbix_agentd   0:off   1:off   2:off   3:on    4:on    5:on    6:off

7.修改zabbix_agentd配置文件

[root@client zabbix-4.0.4]# mkdir -p /usr/local/zabbix/logs

[root@client zabbix-4.0.4]# chown -R zabbix:zabbix /usr/local/zabbix/

[root@client zabbix-4.0.4]# vi /usr/local/zabbix/etc/zabbix_agentd.conf
PidFile=/usr/local/zabbix/logs/zabbix_agentd.pid
LogFile=/usr/local/zabbix/logs/zabbix_agentd.log
Server=172.20.77.201  #zabbix server地址,可以多个用逗号,分隔
ServerActive=172.20.77.201  #主动监测本机数据并发给zabbix server
Hostname=client  
UnsafeUserParameters=1

8.启动客户端服务并测试。
[root@client zabbix-4.0.4]#/etc/init.d/zabbix_agentd start
[root@client zabbix-4.0.4]#netstat -tnlp | grep –color zabbix

tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 37959/zabbix_agentd

9.查看一下错误日志

[root@client zabbix-4.0.4]# tail -n 5 /usr/local/zabbix/logs/zabbix_agentd.log
38417:20200710:045201.506 agent #3 started [listener #2]
38418:20200710:045201.507 agent #4 started [listener #3]
38419:20200710:045201.507 agent #5 started [active checks #1]
38415:20200710:045201.508 agent #1 started [collector]
38419:20200710:045201.509 active check configuration update from [172.20.77.201:10051] started to fail (cannot connect to [[172.20.77.201]:10051]: [113] No route to host)

#日志显示到zabbix服务端网络不可达,zabbix_agentd启动成功,应该是服务端防火墙拦截了

#服务端防火墙放行10051端口

[root@localhost fonts]# firewall-cmd --permanent --add-port=10051/tcp

[root@localhost fonts]# firewall-cmd --reload

#重启zabbix_agentd服务并再次查看一下错误日志

[root@client zabbix-4.0.4]# service zabbix_agentd restart

[root@client zabbix-4.0.4]# tail -n 5 /usr/local/zabbix/logs/zabbix_agentd.log
38814:20200710:051049.445 agent #2 started [listener #1]
38815:20200710:051049.445 agent #3 started [listener #2]
38816:20200710:051049.445 agent #4 started [listener #3]
38817:20200710:051049.446 agent #5 started [active checks #1]
38813:20200710:051049.448 agent #1 started [collector]

#此时可以看到己经恢复正常了

PS:如果重启zabbix_agentd服务日志出现如下报错

[root@client zabbix-4.0.4]# tail -f /usr/local/zabbix/logs/zabbix_agentd.log

8138:20210219:000240.517 active check configuration update from [172.20.77.201:10051] started to fail (ZBX_TCP_READ() timed out)

[root@client ~]# vi /usr/local/zabbix/etc/zabbix_agentd.conf

Timeout=3  #修改此项,默认值为3秒,修改范围1-30秒,适当调大点可解决

Zabbix服务端管理后台的配置 

1、服务端测试到客户的通讯是否正常

在zabbix的服务端执行下面的命令测试与客户端是否通讯

[root@localhost ~]# /usr/local/zabbix/bin/zabbix_get -s 172.20.77.202 -p10050 -k system.uname
zabbix_get [38139]: Get value error: cannot connect to [[172.20.77.202]:10050]: [113] No route to host
#提示网络不可达,应该是客户端的防火墙拦截了

#客户端防火墙开放10050端口即可

[root@client zabbix-4.0.4]# firewall-cmd --permanent --add-port=10050/tcp

[root@client zabbix-4.0.4]# firewall-cmd --reload

#再次测试就正常了

[root@localhost ~]# /usr/local/zabbix/bin/zabbix_get -s 172.20.77.202 -p10050 -k system.uname
Linux client.com.cn 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64  #可以获取客户机系统信息,证明通讯正常

2、添加远程监控的客户机

 

源码安装 otp no curse function found_php_21

 

 

源码安装 otp no curse function found_php_22

 

 #为监控的客户机添加模板

源码安装 otp no curse function found_php_23

 

 

源码安装 otp no curse function found_mysql_24

 

 

源码安装 otp no curse function found_mysql_25

 

 

源码安装 otp no curse function found_nginx_26

 

 可以看到,己经配置成功了,如下图

源码安装 otp no curse function found_nginx_27

 

源码安装 otp no curse function found_php_28

 #添加监控项,在添加主机中,已经添加了一个模板,即Template OS Linux (Template App Zabbix Agent),可以看看这个模板具体是监控了什么。一般来说是够用的,如有特殊的监控内容,可以添加监控项。

源码安装 otp no curse function found_php_29

 

 

源码安装 otp no curse function found_php_30

 

 #页面下拉可以看到具体的细项

源码安装 otp no curse function found_mysql_31

 #设置自动发现规则

源码安装 otp no curse function found_php_32

 

 #可以修改发现的时间间隔

源码安装 otp no curse function found_php_33

 

源码安装 otp no curse function found_mysql_34

 #将以前的更新时间间隔1h改成10s

源码安装 otp no curse function found_nginx_35

 #设置触发器

源码安装 otp no curse function found_mysql_36

 

 

源码安装 otp no curse function found_mysql_37

 

 

源码安装 otp no curse function found_nginx_38

 

 #自定义绘图颜色

源码安装 otp no curse function found_php_39

 

源码安装 otp no curse function found_mysql_40

 

 

源码安装 otp no curse function found_php_41

 

配置zabbix监控apache服务

#客户机apache己提前安装好

#编辑apache配置文件,增加查看本地服务器状态页面

[root@client ~]# vim /etc/httpd/conf/httpd.conf  #在行尾增加以下几行

ExtendedStatus On
<location /server-status>
  SetHandler server-status
  Order allow,deny
  Allow from 127.0.0.1 172.20.77.0/24
</location>

#重启apache服务,防火墙放行80端口

[root@client ~]# systemctl restart httpd

[root@client ~]# firewall-cmd --permanent --add-port=80/tcp

[root@client ~]# firewall-cmd --reload

[root@client ~]# netstat -tlnp|grep 80

tcp6 0 0 :::80 :::* LISTEN 18303/httpd

#查看网址:http://172.20.77.202/server-status是否显示正常,该页面用于收集客户端上apache服务的信息。

源码安装 otp no curse function found_php_42

#下载解压apache监控脚本

 [root@client src]# wget https://github.com/lorf/zapache/archive/master.zip

 [root@client src]# unzip master.zip

[root@client src]# cd zapache-master/

[root@client zapache-master]# ls -l

-rw-r--r--. 1 root root 676 Apr 22 2016 httpd-server-status.conf.sample
-rw-r--r--. 1 root root 1780 Apr 22 2016 README.md
-rw-r--r--. 1 root root 224 Apr 22 2016 userparameter_zapache.conf.sample
-rwxr-xr-x. 1 root root 6110 Apr 22 2016 zapache
-rw-r--r--. 1 root root 52258 Apr 22 2016 zapache-template-active.xml
-rw-r--r--. 1 root root 52024 Apr 22 2016 zapache-template.xml

#说明

httpd-server-status.conf.sample 是用于配置server-status的上个步骤已经配置过了

userparameter_zapache.conf.sample 、zapache 关键的文件
zapache-template-active.xml  zapache-template.xml模板

[root@client zapache-master]# cp zapache /usr/local/bin/

#这里需要修改一下脚本的STATUS_URL的值,不然后面添加模板监控项可能不支持
[root@client zapache-master]# vim /usr/local/bin/zapache

STATUS_URL="http://172.20.77.202/server-status?auto"  #修改

#可以用curl测试一下,能否打开上面的链接

[root@client src]# curl http://172.20.77.202/server-status?auto

Total Accesses: 3
Total kBytes: 4
Uptime: 4516
ReqPerSec: .000664305
BytesPerSec: .906997
BytesPerReq: 1365.33
BusyWorkers: 1
IdleWorkers: 5
Scoreboard:

[root@client zapache-master]# cp userparameter_zapache.conf.sample  /usr/local/zabbix/etc/zabbix_agentd.conf.d/

[root@client zapache-master]# cd /usr/local/zabbix/etc/zabbix_agentd.conf.d/

[root@client zabbix_agentd.conf.d]# mv userparameter_zapache.conf.sample userparameter_zapache.conf

[root@client zabbix_agentd.conf.d]# vi userparameter_zapache.conf

UserParameter=zapache[*],/usr/local/bin/zapache \$1  #修改

#查看脚本用户是否有执行权限

[root@client zapache-master]# ll /usr/local/bin/zapache
-rwxr-xr-x. 1 root root 6110 Jul 15 09:10 /usr/local/bin/zapache

[root@client zabbix_agentd.conf.d]# vi /usr/local/zabbix/etc/zabbix_agentd.conf

Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/  #取消注释,修改路径,启用引用此目录

#重启zabbix_agentd服务

[root@client zapache-master]# service zabbix_agentd restart

服务端页面,后台导入模板,使用master.zip里的zapache-template.xml作为模板文件,点击“导入”

源码安装 otp no curse function found_mysql_43

 

 

源码安装 otp no curse function found_php_44

 

 为监控的客户机添加apache监控模板

源码安装 otp no curse function found_nginx_45

源码安装 otp no curse function found_mysql_46

 

源码安装 otp no curse function found_mysql_47

源码安装 otp no curse function found_mysql_48

#查看最新数据,筛选Apache

源码安装 otp no curse function found_php_49

源码安装 otp no curse function found_php_50

 #勾选几个想要查看的项目生成图形

源码安装 otp no curse function found_nginx_51

 

源码安装 otp no curse function found_mysql_52

 

 

源码安装 otp no curse function found_php_53

 

 

源码安装 otp no curse function found_mysql_54

配置zabbix监控mysql服务

 #zabbix默认提供了mysql的监控模板。zabbix服务器默认有装mysql数据库,这里就用zabbix服务器监控它自己本身的mysql数据库。

# 对数据库用户zabbix,授予在任何对象上的usage权限

# 由于我们是监控的服务端上的mysql服务,在赋予权限的时,zabbix用户的密码应该与配置zabbix服务端时mysql用户zabbix的密码保持一致。

# 如果监控的不是服务端上的mysql,赋予zabbix用户时密码随意。

 [root@server ~]# mysql -uroot -p123456

mysql> grant usage on *.* to zabbix@'%' identified by 'zabbix@123456';
Query OK, 0 rows affected, 1 warning (0.02 sec)

mysql> exit
Bye

 # 复制一份zabbix安装包中mysql用户参数配置文件到zabbix的安装配置目录下

[root@server ~]# cp /usr/local/src/zabbix-4.0.4/conf/zabbix_agentd/userparameter_mysql.conf  /usr/local/zabbix/etc/zabbix_agentd.conf.d/

[root@server ~]# vi /usr/local/zabbix/etc/zabbix_agentd.conf

Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/  #取消注释,修改并启用

# 建立数据库与zabbix的连接

[root@server ~]# vim /usr/local/zabbix/etc/.my.cnf

#Zabbix Agent
[mysql]
host=localhost
user=zabbix
password=zabbix@123456
socket=/usr/local/mysql/mysql.sock

[mysqladmin]
host=localhost
user=zabbix
password=zabbix@123456
socket=/usr/local/mysql/mysql.sock

# 编辑zabbix中mysql用户参数配置文件,添加.my.cnf文件的路径

# 添加mysql的路径

# 主要看HOME所在行的目录是否正确。

[root@server ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/userparameter_mysql.conf

1 # For all the following commands HOME should be set to the directory that has .my.cnf file with password information.
2
3 # Flexible parameter to grab global variables. On the frontend side, use keys like mysql.status[Com_insert].
4 # Key syntax is mysql.status[variable].
5 UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/usr/local/zabbix/etc/ /usr/local/mysql/bin/mysql -N | awk '{print $$2}'
6
7 # Flexible parameter to determine database or table size. On the frontend side, use keys like mysql.size[zabbix,history,data].
8 # Key syntax is mysql.size[<database>,<table>,<type>].
9 # Database may be a database name or "all". Default is "all".
10 # Table may be a table name or "all". Default is "all".
11 # Type may be "data", "index", "free" or "both". Both is a sum of data and index. Default is "both".
12 # Database is mandatory if a table is specified. Type may be specified always.
13 # Returns value in bytes.
14 # 'sum' on data_length or index_length alone needed when we are getting this information for whole database instead of a single table
15 UserParameter=mysql.size[*],bash -c 'echo "select sum($(case "$3" in both|"") echo "data_length+index_length";; data|index) echo "$3_length";; free) echo "data_free ";; esac)) from information_schema.tables$([[ "$1" = "all" || ! "$1" ]] || echo " where table_schema=\"$1\"")$([[ "$2" = "all" || ! "$2" ]] || echo "and table_name= \"$2\"");" | HOME=/usr/local/zabbix/etc/ /usr/local/mysql/bin/mysql -N'
16
17 UserParameter=mysql.ping,HOME=/usr/local/zabbix/etc/ /usr/local/mysql/bin/mysqladmin ping | grep -c alive
18 UserParameter=mysql.version,/usr/local/mysql/bin/mysql

# 重启zabbix_agentd服务

[root@server ~]# service zabbix_agentd restart

#为需要监控的主机添加模板“Template DB MySQL”

源码安装 otp no curse function found_mysql_55

 

 

源码安装 otp no curse function found_php_56

 

 

源码安装 otp no curse function found_nginx_57

 

 

源码安装 otp no curse function found_mysql_58

 #配置好后,在监测-最新数据里就可以看到mysql监控数据了

源码安装 otp no curse function found_nginx_59

 如果在配置过程中没有得到想要的结果可以按照以下步骤排错:

①查看zabbix_server、zabbix_agentd是否已经启动,有没有监听到10050和10051端口号。
②查看zabbix服务端和客户端的日志文件,看看有没有报错。
③查看模板的脚本文件,看脚本里的一些命令能不能正确获取的数据。apache的是/usr/local/bin/zapache,mysql的是/usr/local/zabbix/etc/zabbix_agentd.conf.d/userparameter_mysql.conf
 

Zabbix邮件报警配置

邮件服务可以使用系统自带的邮件服务来发送邮件或者使用其他邮件服务调用第三方邮件来发送警告邮件

这里演示如何调用第三方邮件服务来发送邮件:

第一步:首先安装mailx组件并配置好能够通过三方邮箱发送邮件

[root@server ~]# yum install -y mailx

[root@server ~]# vi /etc/mail.rc  #编辑mailx的配置文件,在最末尾添加如下信息

set from=example@126.com

set smtp=smtp.126.com

set smtp-auth-user=example@126.com

set smtp-auth-password=你的密码 注意:此为126邮箱设置的客户端授权密码

set smtp-auth=login 

[root@server ~]# echo "zabbix test mail" |mailx -s "zabbix" xxxxxx@qq.com  #测试邮件是否能发送成功

 

在zabbix服务端写邮件发送脚本:

[root@server ~]# cd /usr/local/zabbix/share/zabbix/alertscripts/

[root@server alertscripts]# vim sendmail.sh

#!/bin/bash

messages=`echo $3 | tr '\r\n' '\n'`

subject=`echo $2 | tr '\r\n' '\n'`

echo "${messages}" | mailx -s "${subject}" $1 >>/tmp/sendmail.log 2>&1

[root@server alertscripts]# chown zabbix:zabbix sendmail.sh

[root@server alertscripts]# chmod +x  sendmail.sh

修改主配置文件,让服务读取到这个脚本:

vim /usr/local/zabbix/etc/zabbix_server.conf

修改:

# AlertScriptsPath=${datadir}/zabbix/alertscripts

AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts

测试发送脚本

/usr/local/zabbix/share/zabbix/alertscripts/sendmail.sh xxxx@qq.com "测试邮件标题" "测试邮件内容"

[root@server alertscripts]#chmod 777 /tmp/sendmail.log

页面添加报警配置

源码安装 otp no curse function found_php_60

 

 

源码安装 otp no curse function found_php_61

{ALERT.SENDTO}

{ALERT.SUBJECT}

{ALERT.MESSAGE}

很多人安装zabbix 3.0之后,写的脚本一直发信不成功,手动执行时可以的。

这是因为zabbix3.0之后,可以自定义参数了,所以不写参数,它是不会传参数的。

在2.x版本不存在这个问题,默认会传3个参数。

源码安装 otp no curse function found_nginx_62

 

 

源码安装 otp no curse function found_nginx_63

 

 

源码安装 otp no curse function found_php_64

 

 

动作内容如下

名称:Action-Email

源码安装 otp no curse function found_nginx_65

操作

默认接收人:故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生:      {TRIGGER.NAME}故障!

默认信息:

告警主机:{HOSTNAME1}

告警时间:{EVENT.DATE} {EVENT.TIME}

告警等级:{TRIGGER.SEVERITY}

告警信息: {TRIGGER.NAME}

告警项目:{TRIGGER.KEY1}

问题详情:{ITEM.NAME}:{ITEM.VALUE}

当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}

事件

源码安装 otp no curse function found_php_66

 

 

源码安装 otp no curse function found_nginx_67

 

 

恢复操作

默认接收人:已恢复!{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}

恢复信息:

告警主机:{HOSTNAME1}

告警时间:{EVENT.DATE} {EVENT.TIME}

告警等级:{TRIGGER.SEVERITY}

告警信息: {TRIGGER.NAME}

告警项目:{TRIGGER.KEY1}

问题详情:{ITEM.NAME}:{ITEM.VALUE}

当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}

事件

源码安装 otp no curse function found_php_68

 

 

源码安装 otp no curse function found_nginx_69

 

 

源码安装 otp no curse function found_mysql_70

测试,关闭 zabbix 客户端服务 zabbix_agentd

[root@server ~]# systemctl stop zabbix_agentd 

观察结果:延迟比较大,大概要5-10分钟

可以在日志看送达状态:

源码安装 otp no curse function found_nginx_71

 

 使用Grafana美化Zabbix监控图表

安装Grafana

Grafana是一个将数据可视化的工具,是网络架构和应用分析中最流行的数据展示工具,相比于zabbix的图形界面而言Grafana拥有更美观的界面以及功能更强大的插件。

官方下载地址:

https://grafana.com/grafana/download

方法1:离线安装上传grafana-6.6.2-1.x86_64.rpm到linux上

[root@xuegod63 ~]# rz

源码安装 otp no curse function found_mysql_72

[root@server ~]# yum install -y grafana-6.6.2-1.x86_64.rpm

启动服务

[root@server ~]# systemctl start grafana-server

方法2:在线安装

[root@server ~]# wget https://dl.grafana.com/oss/release/grafana-6.6.2-1.x86_64.rpm

[root@server ~]# rpm -i --nodeps grafana-6.6.2-1.x86_64.rpm

访问web界面:http://172.20.77.201:3000/login

用户名:admin    密码:admin

 

源码安装 otp no curse function found_nginx_73

第一次登陆,会提示让你设置一个新的密码,因为默认密码是弱口令密码,存在风险。

 

源码安装 otp no curse function found_mysql_74

 添加数据源,点两个位置都可以

源码安装 otp no curse function found_nginx_75

但是Grafana默认并没有zabbix数据源的支持。

源码安装 otp no curse function found_php_76

添加数据源拓展插件

方法1:离线安装插件上传grafana-zabbix-v3.10.5.zip到linux系统上

[root@server ~]# rz

方法2:网上下载:https://grafana.com/api/plugins/alexanderzobnin-zabbix-pp/versions/3.10.5/download

解压至插件目录

[root@server ~]# unzip grafana-zabbix-v3.10.5.zip -d /var/lib/grafana/plugins/

注:压缩包名称较长这里已经简短其文件名,如果自行下载的版本解压时注意文件名。

[root@xuegod63 ~]# systemctl restart grafana-server

 

源码安装 otp no curse function found_mysql_77

方法2:在线安装插件

[root@xuegod63 ~]# grafana-cli plugins install alexanderzobnin-zabbix-app

[root@xuegod63 ~]# systemctl restart grafana-server

启用插件下拉至最后找到zabbix点击启用

 

源码安装 otp no curse function found_php_78

下拉至最后找到zabbix

源码安装 otp no curse function found_nginx_79

点击启用

源码安装 otp no curse function found_php_80

现在添加数据源就有zabbix的选项了

 

源码安装 otp no curse function found_nginx_81

下拉到最后选择zabbix

源码安装 otp no curse function found_php_82

 zabbix API地址:http://172.20.77.201/api_jsonrpc.php

 

源码安装 otp no curse function found_mysql_83

启用仪表盘,上一步骤是在settings中,点击切换到仪表盘即可开启。

源码安装 otp no curse function found_nginx_84

 导入成功:

 

源码安装 otp no curse function found_mysql_85

查看效果

 

源码安装 otp no curse function found_mysql_86

选择Linux Server仪表盘看一下效果

 

源码安装 otp no curse function found_php_87

点击Zabbix Template Linux Server

源码安装 otp no curse function found_php_88

 

 关于Zabbix的源码包安装就讲到这里,如有错误,欢迎留言指正