Zabbix服务安装部署

官方网站:http://www.zabbix.com/
The Enterprise-class Monitoring Solution for Everyone
企业级监控解决方案
zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案
zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位解决存在的各种问题

Zabbix 主要特点
安装与配置简单,学习成本低 支持多语言(包括中文) 免费开源 自动发现服务器与网络设备分布式监视以及 WEB 集中管理功能 可以无 agent 监视 用户安全认证和柔软的授权方式 通过 WEB 界面设置或查看监视结果 email 等通知功能

Zabbix主要功能
监控CPU负载、内存使用、磁盘使用、网络状态、端口监视、日志监视、插件开发自定义

Zabbix运行机制
Zabbix Server 和 Zabbix agent
Zabbix Server 可以通过 SNMP,Zabbix agent,Ping,端口监视等你方法提供对远程服务器/网络状态的 监视,数据收集功能,可以在运行 Linux,Solaris,HP-UX,AIX,FreeBSD,OpenBSD,OX X,Windows 多 平台。
Zabbix Agent 安装在需要被监控的目标服务器上,主要完成对硬件信息与操作系统有关的内存,CPU 等你 信息收集。
Zabbix Server 可以单独监视远程服务器的服务状态,同时也可以与 Zabbix Agent 结合。可以轮询 Zabbix Agent 主动接收监视数据(trapping 传递 方式),同时还可以被动接收 Zabbix Agent 发送的数据。

Zabbix运行过程图
在这里插入图片描述
Zabbix 支持多种网络方式下的监控,可以通过分布式的部署和安装监控代理 Zabbix,通过 C/S 模式采集数据,通过 B/S 模式在 Web 端展示和配置!Agent 监控端口 10050
服务端安装 Zabbix Server 和 Zabbix Agent 两个服务,客户端只安装 Zabbix Agent 一个服务,监控原理 就是 Zabbix Agent 服务将从系统中获取的相关数据传送给 Zabbix Server,然后 Zabbix Server 服务奖数据分 析之后以 PHP 页面展示出来!

ZBBIX搭建,需要搭建好LNMP环境,因为 Zabbix 通过 PHP 页面展示

此步省略

创建导入zabbix数据库
Zabbix 需要数据库的支持,而却 Zabbix 已经自带了数据库结构,images 数据库和表数据等相关内容
创建 Zabbix 使用数据库

[root@localhost ~]# mysql -uroot -p'Admin123!@#'
mysql> create database zabbix;
Query OK, 1 row affected (0.00 sec)

zabbix 用户授权

mysql> grant all on zabbix.* to zabbix@localhost identified by 'Admin123!@#';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

安装包下载

[root@localhost ~]# wget https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/4.4.1/zabbix-4.4.1.tar.gz
[root@localhost ~]# tar -xf zabbix-4.4.1.tar.gz -C /usr/local/src/

导入数据库,注意顺序,否则会报错

[root@localhost ~]#cd /usr/local/src/zabbix-4.4.1/database/mysql
[root@localhost mysql]# mysql -uzabbix -p'Admin123!@#' zabbix < schema.sql 
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@localhost mysql]# mysql -uzabbix -p'Admin123!@#' zabbix < images.sql 
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@localhost mysql]# mysql -uzabbix -p'Admin123!@#' zabbix < data.sql 
mysql: [Warning] Using a password on the command line interface can be insecure.

如果在做分布式的环境中,Proxy 服务器只需要一个数据库 schema,代理者 agent 不需要数据库!Server 必须 三个数据库同时拥有

Zabbix同时支持很多类型数据库,可以通过查阅帮助: https://www.zabbix.com/documentation/2.4/manual/appendix/install/db_scripts

编译安装 zabbix

创建用户

[root@localhost ~]# groupadd zabbix
[root@localhost ~]# useradd -s /sbin/nologin -g zabbix zabbix

解决依赖

[root@localhost ~]# yum -y install net-snmp-devel 
[root@localhost ~]# yum -y install libevent libevent-devel
[root@localhost zabbix-4.4.1]# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl
***********************************************************
*            Now run 'make install'                       *
*                                                         *
*            Thank you for using Zabbix!                  *
*              <http://www.zabbix.com>                    *
***********************************************************
[root@localhost zabbix-4.4.1]# make install
编译成功,产生如下目录
[root@localhost zabbix-4.4.1]# ls /usr/local/zabbix/
bin  etc  lib  sbin  share

################################################参数说明##############################################
–prefix= #指定路径
–enable-server #Server 支持
–enable-agent #支持 Zabbix 客户端
–with-mysql #指定 MySql 库可以选择自定路径 mysql_config,mysql_config 是命令,用于编译 mysql 客户端程序
–with-net-snmp #支持 snmp 协议,需要安装 net-snmp-devel 包
–with-libcurl #支持 CURL 功能,libcurl 主要功能就是用不同的协议连接不同的服务器,
libcurl 当前支持的协议有 http,https,ftp,gopher,telent,dict,file,和 ldap 协议

其他参数:
–enable-proxy 指的是支持 zabbix 代理服务器,zabbix proxy 是一个监控代理服务器,它收集到监控数据,选存放在缓冲区,保存的时间可以通过配置文件设定,然后再传送的 zabbix server。监控代理服务需要一个独立的数据库。
用 zabbix proxy 的好处:进程监控,当监控的位置通信不便时,当通讯上千台设备的时候,使用 zabbix_proxy 可以简化维护分布式监控,降低 zabbix server 的负载,
在这里插入图片描述

配置 zabbix Server

[root@localhost zabbix-4.4.1]# vim /usr/local/zabbix/etc/zabbix_server.conf

DBHost=localhost #默认注释掉了,直接取消注释即可
DBName=zabbix #数据库用户,我们授权的用户也是zabbix
DBUser=zabbix #默认是 root,我们授权的用户是 zabbix
DBPassword=Admin123!@# #数据库密码

监控 Zabbix Server 本身

监控本身,意思是本身作为服务器之外,自己也做自己的客户端,也要使用agentd这个代理者 配置文件中,有 agentd 和 agent 两个配置文件,前者是守护进程,后者依赖 xinetd

[root@localhost zabbix]# vim /usr/local/zabbix/etc/zabbix_agentd.conf

Server=127.0.0.1 #默认监控服务器自己,这三行不用改
ServerActive=127.0.0.1
Hostname=Zabbix server
UnsafeUserParameters=1 #允许所有的字符是在用户定义的参数,参数传递,也就是支持自定义脚本,默认是0

其中 Server 和 ServerActive 都指定 zabbixserver 的 IP 地址,不同的是,前者是被动后者是主动。也就是说前者允许 127.0.0.1 这个 ip 来我这取数据。而 serverActive 的 127.0.0.1 的意思是,客户端主动提交数据给他。

启动服务

如果 zabbix 用户不存在, 将以 root 运行,新建之后,如果 zabbix 存在,那么直接可以用 zabbix 运行
直接运行

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

如果启动报错解决
sbin/zabbix_server: error while loading shared libraries: libmysqlclient.so.20: cannot open shared object file: No such file or directory

解决库文件找不到

[root@localhost zabbix]# vim /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/mysql/lib/   #根据实际路径添加此行

使库文件生效

[root@localhost zabbix]# ldconfig  

开机启动

[root@localhost zabbix]# echo /usr/local/zabbix/sbin/zabbix_server >> /etc/rc.local   

server 运行端口 10051

或者通过启动脚本启动 zabbix
Zabbix默认有部分启动脚本,如果你自己也可以通过脚本的方式来实现,可以使用他的模板来实现 脚本在源码目录的 misc/init.d/下面(使用 fedora 下面的 core 即可,也可以使用 fedroa core5 的脚本均可)

[root@localhost init.d]# cd /usr/local/src/zabbix-4.4.1/misc/init.d/fedora/
[root@localhost fedora]#cp fedora/core/* /etc/rc.d/init.d/
[root@localhost fedora]#vim /etc/init.d/zabbix_server 
BASEDIR=/usr/local/zabbix  #找到此行,并修改
[root@localhost fedora]#vim /etc/init.d/zabbix_agentd
BASEDIR=/usr/local/zabbix  #找到此行,并修改 

启动服务

[root@localhost fedora]#/etc/init.d/zabbix_server start
Reloading systemd:                                         [  确定  ]
Starting zabbix_server (via systemctl):                    [  确定  ]

客户端启动

[root@localhost fedora]#/etc/init.d/zabbix_agentd start
Starting zabbix_agentd (via systemctl):                    [  确定  ]

添加到系统服务

[root@localhost fedora]#  chkconfig zabbix_server on
[root@localhost fedora]# chkconfig zabbix_agentd on

编辑 php 页面控制文件
默认配置文件没有写入到我们的 Nagix 的配置文件中,也就是不能加载到我们的 zabbix 页面目录

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

重启nginx服务和php-fpm服务

[root@localhost fedora]# nginx -s reload
[root@localhost fedora]# /etc/init.d/php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm  done

打开网页安装 zabbix web
浏览器输入:http://10.10.100.39 如图,下一步 Next
在这里插入图片描述
在这里插入图片描述
编辑 php.ini 文件,修改环境

[root@localhost fedora]#vim /usr/local/php/php.ini
post_max_size = 16M	 #修改,默认是8
max_execution_time = 300	#修改,默认30
max_input_time = 300	#修改,默认60
date.timezone = Asia/Shanghai	#此行有注释,去注释并修改
always_populate_raw_post_data = -1	 #此行取消注释即可
mysqli.default_socket =/usr/local/mysql/run/mysql.sock#指定php连接mysql的sock路径

重启fpm刷新页面

[root@localhost fedora]# /etc/init.d/php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm  done

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
把服务都刷新一下

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

[root@localhost ~]# cd /usr/local/src/php-7.3.4/ext/ldap/
[root@localhost ldap]# /usr/local/php/bin/phpize   #生成configure执行文件
编译安装
[root@localhost ldap]# ./configure --with-php-config=/usr/local/php/bin/php-config --with-ldap   
上面的过程会报错,提示缺少库文件:
[root@localhost ldap]#yum install openldap-devel openldap -y
[root@localhost ldap]#rsync -avz /usr/lib64/libldap* /usr/lib/
再次configure,即可通过预编译

[root@localhost ldap]#make && make install
[root@localhost ldap]#vim /usr/local/php/php.ini
添加:extension=ldap.so
重启php
[root@localhost ldap]#/etc/init.d/php-fpm restart
[root@localhost conf]# nginx -s reload
[root@localhost conf]# /etc/init.d/php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm  done
[root@localhost conf]# /etc/rc.d/init.d/zabbix_server restart
Restarting zabbix_server (via systemctl):                  [  确定  ]

在这里插入图片描述
默认用户是admin,密码是zabbix
在这里插入图片描述
登录之后设置成中文
在这里插入图片描述监控zabbix自己
在这里插入图片描述

字体乱码的解决办法

在这里插入图片描述

在windows上拷贝一个字体替换一下就可以解决
C:\Windows\Fonts #windows字体路径
拷贝到zabbix服务器的/usr/local/nginx/html/assets/fonts/下面 有个DejaVuSans.ttf,将这个文件替换

[root@localhost ~]#cd /usr/local/nginx/html/assets/fonts/
[root@localhost fonts]# mv simkai.ttf graphfont.ttf
[root@localhost include]# vim /usr/local/nginx/html/include//defines.inc.php

 define('ZBX_GRAPH_FONT_NAME',           'graphfont'); // font file name   #修改成新的字体
define('ZBX_FONT_NAME', 'graphfont');           #修改成新的字体

或者把需要更新的字体放到/usr/local/nginx/html/assets/fonts/下面,做成一个软链接,这样也不用重启服务器

[root@localhost fonts]# ln -s ./STZHONGS.TTF ./graphfont.ttf
[root@localhost fonts]# ll
总用量 45076
lrwxrwxrwx. 1 root root       14 11月  1 21:46 graphfont.ttf -> ./STZHONGS.TTF
-rwxrwxrwx. 1 root root 11787328 3月   2 2019 graphfont.ttf.bak
-rwxrwxrwx. 1 root root 18214472 3月  19 2019 simsun.ttc
-rw-r--r--. 1 root root  4016288 4月  26 2019 STXINGKA.TTF
-rw-r--r--. 1 root root 12135284 4月  26 2019 STZHONGS.TTF

重启zabbix服务
在这里插入图片描述

报错

zabbix server is not running: the information displayed may not be current
在这里插入图片描述
下面的几种情况都有可能引起这个错误
检查防火墙、selinux是否关闭
firewalld

[root@localhost etc]#systemctl start firewalld
[root@localhost etc]#firewall-cmd --zone=public --permanent --add-port=10050/tcp
[root@localhost etc]#firewall-cmd --reload

<1>关闭selinux

永久关闭 sed -ri ‘/^SELINUX=/cSELINUX=disabled’ /etc/selinux/config

临时关闭 setenforce 0

更改zabbix的web的配置文件

这个文件就是页面安装时写的信息,写错可以在这里修改
[root@localhost fonts]# vim /usr/local/nginx/html/conf/zabbix.conf.php

<?php
// Zabbix GUI configuration file.
global $DB;

$DB['TYPE']     = 'MYSQL';
$DB['SERVER']   = 'localhost';  #这里是配置IP还是配置localhost,取决于在数据库授权的是什么
$DB['PORT']     = '3306';
$DB['DATABASE'] = 'zabbix';
$DB['USER']     = 'zabbix';
$DB['PASSWORD'] = 'Admin123!@#';

// Schema name. Used for IBM DB2 and PostgreSQL.
$DB['SCHEMA'] = '';

$ZBX_SERVER      = 'localhost';   #这里是配置IP还是配置localhost,取决于在数据库授权的是什么
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = '';

$IMAGE_FORMAT_DEFAULT = IMAGE_FORMAT_PNG;

[root@localhost ~]# vim /usr/local/zabbix/etc/zabbix_server.conf

### Option: StartDBSyncers
#       Number of pre-forked instances of DB Syncers.
#
# Mandatory: no
# Range: 1-100
# Default:
StartTrappers=100   #将这个开启,并设置100

做了以上的设置还是不行
日志报错如下

connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/usr/local/mysql/tmp/mysql.sock' (2)

无法连接数据库
做个软链接

[root@localhost run]# ln -s /usr/local/mysql/run/mysql.sock /usr/local/mysql/tmp/mysql.sock

还有报错

 connection to database 'zabbix' failed: [1045] Access denied for user 'zabbix'@'localhost' (using password: NO)

拒绝链接,在数据库上输入命令是可以登录数据库
查看半天,才发现是这个配置vim /usr/local/zabbix/etc/zabbix_server.conf的链接数据库的密码忘记配置了。
DBPassword=Admin123!@# 这个密码不能有引号

配置上去,重启服务器。
在这里插入图片描述

服务端已搭建完成

配置监控远程主机

在被监控的服务器上安装操作
解决依赖

[root@localhost ~]# yum -y install  curl curl-devel net-snmp net-snmp-devel perl-DBI  gcc gcc-c++

创建运行用户

[root@localhost ~]# useradd -M -s /sbin/nologin  zabbix

下载安装包

[root@localhost ~]# wget https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/4.4.1/zabbix-4.4.1.tar.gz
[root@localhost ~]# tar -xf zabbix-4.4.1.tar.gz -C /usr/local/src/
[root@MYSQL ~]# cd /usr/local/src/zabbix-4.4.1/

编译安装

[root@MYSQL zabbix-4.4.1]# ./configure --prefix=/usr/local/zabbix  --enable-agent
[root@MYSQL zabbix-4.4.1]# make install

复制启动脚本

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

修改启动脚本

[root@MYSQL zabbix-4.4.1]# vim /etc/rc.d/init.d/zabbix_agentd 

        # Zabbix-Directory
        BASEDIR=/usr/local/zabbix   #修改成安装的路径

启动

[root@MYSQL zabbix-4.4.1]# /etc/rc.d/init.d/zabbix_agentd start
Reloading systemd:                                         [  确定  ]
Starting zabbix_agentd (via systemctl):                    [  确定  ]
[root@MYSQL zabbix-4.4.1]# cat /etc/services |grep zabbix
zabbix-agent    10050/tcp               # Zabbix Agent
zabbix-agent    10050/udp               # Zabbix Agent
zabbix-trapper  10051/tcp               # Zabbix Trapper
zabbix-trapper  10051/udp               # Zabbix Trapper

配置 Agnet 开机启动

[root@MYSQL zabbix-4.4.1]# cp /usr/local/src/zabbix-4.4.1/misc/init.d/fedora/core5/zabbix_agentd /etc/init.d/
[root@MYSQL zabbix-4.4.1]# vim /etc/init.d/zabbix_agentd 
ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_agentd"  #修改zabbix_agent的命令路径
[root@MYSQL zabbix-4.4.1]# cd /usr/local/zabbix/sbin/
[root@MYSQL sbin]# ll
总用量 1648
-rwxr-xr-x. 1 root root 1686280 11月  6 13:22 zabbix_agentd

添加到系统服务,设置开机自启

[root@MYSQL sbin]# chkconfig --add zabbix_agentd
[root@MYSQL sbin]# chkconfig zabbix_agentd on

core 和 core5 里面的文件都可以实现 zabbix 代理启动,core 里面是测试版本,core5 是稳定版本

配置 Agentd 的配置文件

[root@MYSQL ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf

Server=127.0.0.1   ##zabbix server 地址,可以多个,用
ServerActive=              ##主动检查的意思,主动检查主机的数据的数据发送给 Zabbix Server
Hostname=                 #写本机的主机名或者IP
UnsafeUserParameters=0     #设置成1,开启

保存,退出

重启服务

[root@MYSQL ~]# /etc/rc.d/init.d/zabbix_agentd restart
Restarting zabbix_agentd (via systemctl):                  [  确定  ]
[root@MYSQL ~]# netstat -antup |grep zabbix
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      17921/zabbix_agentd 
[root@MYSQL ~]# ps -aux |grep zabbix
zabbix    17921  0.0  0.0  18932   752 ?        S    13:40   0:00 /usr/local/zabbix/sbin/zabbix_agentd
zabbix    17922  0.0  0.0  18932   824 ?        S    13:40   0:00 /usr/local/zabbix/sbin/zabbix_agentd: collector [idle 1 sec]
zabbix    17923  0.0  0.0  18932   464 ?        S    13:40   0:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #1 [waiting for connection]
zabbix    17924  0.0  0.0  18932   464 ?        S    13:40   0:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #2 [waiting for connection]
zabbix    17925  0.0  0.0  18932   464 ?        S    13:40   0:00 /usr/local/zabbix/sbin/zabbix_agentd: listener #3 [waiting for connection]
zabbix    17926  0.0  0.0  18932   876 ?        S    13:40   0:00 /usr/local/zabbix/sbin/zabbix_agentd: active checks #1 [idle 1 sec]
root      17933  0.0  0.0 112728   976 pts/0    R+   13:41   0:00 grep --color=auto zabbix
现在是出于等待连接的状态

到zabbix服务端测试通讯

[root@localhost fonts]# /usr/local/zabbix/bin/zabbix_get -s 10.10.100.46 -p10050 -k system.uname
zabbix_get [105422]: Get value error: cannot connect to [[10.10.100.46]:10050]: [113] No route to host
报这个错,检查一下防火墙,把10050端口开放就可以

[root@localhost fonts]# /usr/local/zabbix/bin/zabbix_get -s 10.10.100.46 -p10050 -k system.uname
Linux localhost.localdomain 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64

已经获取到了被监控服务器的主机名,通讯ok

客户端和服务端两者之间监控端口不一样

[root@localhost etc]# netstat -antup | grep zabbix
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      11082/zabbix_agentd   客户端
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      17214/zabbix_server    服务端

监控自己使用 10051 端口,监控对方使用的是 10050端口

到浏览器上
添加 Host 主机
在这里插入图片描述
在这里插入图片描述

在弹出的模块里选择一个自己需要的模块
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
返回之后,可以看到已经添加进来:等到可用性变成绿色即可出图监控
在这里插入图片描述
在这里插入图片描述
这时间可以通过图形功能来查看出图情况:
在这里插入图片描述
在这里插入图片描述
============通过以上步骤成功添加一台远程监控主机

添加监控项:
通过比较zabbix servers 群组和Linux servers 群组,可以发现,默认的配置中Linux servers监控项比较少,下面手动添加监控项
在这里插入图片描述
在这里插入图片描述
筛选无触发器,出来很多监控项,默认都是启用状态,我们无需再次启动,下面修改自动发现的时间在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
修改更新数据后,再次返回图形监控页面,稍等几分钟再次查看监控项
主页,可以看到整体的监控状态
在这里插入图片描述

设置 Triger 触发器值
在这里插入图片描述
找到当前主机应用的模板
在这里插入图片描述
在这里插入图片描述
默认的值是20%

在这里插入图片描述
修改成自己设定的值
在这里插入图片描述

更新数据

以上是触发器值的设置========

自定义绘图颜色:
找到主机对应的模块—修改模板对应的图形颜色
在这里插入图片描述
根据需求修改每一个项的显示颜色
在这里插入图片描述
在这里插入图片描述

zabbix

zabbix_agent.conf 是用超级服务(xinetd)的方式来启动的,被动检查,只有 Server 说检查的时候才检查
zabbix_agentd.conf 是以独立进程的方式来启动的,一般使用这个来做配置,自动检查,自动提交 zabbix_server.conf Server 启动配置文件,只有一个
zabbix_get 是 Zabbix 中的一个程序,用于 Zabbix-Server 到 Zabbix-Agent 的数据获取,通常可以用来 检测验证 Agent 的配置是否正确。它的使用方法如下
zabbix_get [-hV] -s [-p ] [-I ] -k
-h:远程 Zabbix-Agent 的 IP 地址或者是主机名。
-p:远程 Zabbix-Agent 的端口。
-I:本机出去的 IP 地址,用于一台机器中有多个网卡的情况。
-k:获取远程 Zabbix-Agent 数据所使用的 Key。

[root@localhost ~]# zabbix_get -s 10.10.100.46 -k system.uname
zabbix_sender 与 get 相反,用来发送 Zabbix 服务器处理性能数据。该工具通常用于长时间运行的用户脚 本,用于定期发送可用性和性能数据。使用方法如下

zabbix_sender [-Vhv] {[-zpsI] -ko | [-zpI] -T -i -r} [-c ]
参数说明:
-c --config 配置文件绝对路径
-z --zabbix-server zabbix server 的 IP 地址
-p --port zabbix server 端口.默认 10051
-s --host 主机名,zabbix 里面配置的主机名(不是服务器的 hostname),不能使用

ip 地址
-I --source-address 源 IP
-k --key 监控项的 key
-o --value key 值
-i --input-file 从文件里面读取 hostname、key、value 一行为一条数据,使用空格作为分
隔符,如果主机名带空格,那么请使用双引号包起来
-T --with-timestamps 一行一条数据,空格作为分隔符:
,配合 --input-file option,timestamp 为 unix 时间戳
-r --real-time 将数据实时提交给服务器
-v --verbose 详细模式, -vv 更详细

配置 Zabbix 监控 Apache 服务

http://www.zabbix.org/wiki/Main_Page
https://github.com/zabbix/zabbix-community-repos
各种模板
http://www.douglas.wiki.br/doku.php?id=en:installing_and_configuring_zabbix
apache监控模板
wget https://github.com/lorf/zapache/archive/master.zip

在被监控服务器下载

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

解压到指定目录

[root@localhost ~]# unzip master.zip -d /usr/local/src/
Archive:  master.zip
24a764b2e224f9b8d0a6bc94dcadd7568b2fe650
   creating: /usr/local/src/zapache-master/
  inflating: /usr/local/src/zapache-master/README.md  
  inflating: /usr/local/src/zapache-master/httpd-server-status.conf.sample  
  inflating: /usr/local/src/zapache-master/userparameter_zapache.conf.sample  
  inflating: /usr/local/src/zapache-master/zapache  
  inflating: /usr/local/src/zapache-master/zapache-template-active.xml  
  inflating: /usr/local/src/zapache-master/zapache-template.xml  
[root@localhost ~]# cd /usr/local/src/zapache-master/
[root@localhost zapache-master]# ll
总用量 124
-rw-r--r-- 1 root root   676 4月  22 2016 httpd-server-status.conf.sample    #apache配置文件
-rw-r--r-- 1 root root  1780 4月  22 2016 README.md                    #指导文件
-rw-r--r-- 1 root root   224 4月  22 2016 userparameter_zapache.conf.sample   #zabbix脚本触发文件
-rwxr-xr-x 1 root root  6110 4月  22 2016 zapache              #可执行文件
-rw-r--r-- 1 root root 52258 4月  22 2016 zapache-template-active.xml
-rw-r--r-- 1 root root 52024 4月  22 2016 zapache-template.xml                 #zabbix监控模板文件

这台服务器需要安装好httpd

[root@MYSQL src]# systemctl start httpd
[root@MYSQL src]# ps -aux |grep httpd
root      24198  5.8  0.5 230420  5200 ?        Ss   22:12   0:00 /usr/sbin/httpd -DFOREGROUND
apache    24199  0.0  0.3 230420  3008 ?        S    22:12   0:00 /usr/sbin/httpd -DFOREGROUND
apache    24200  0.0  0.3 230420  3008 ?        S    22:12   0:00 /usr/sbin/httpd -DFOREGROUND
apache    24201  0.0  0.3 230420  3008 ?        S    22:12   0:00 /usr/sbin/httpd -DFOREGROUND
apache    24202  0.0  0.3 230420  3008 ?        S    22:12   0:00 /usr/sbin/httpd -DFOREGROUND
apache    24203  0.0  0.3 230420  3008 ?        S    22:12   0:00 /usr/sbin/httpd -DFOREGROUND
root      24205  0.0  0.0 112732   976 pts/0    S+   22:12   0:00 grep --color=auto httpd

复制配置文件

[root@MYSQL conf]# pwd
/etc/httpd/conf
[root@MYSQL conf]# vim httpd.conf 
#EnableMMAP off
EnableSendfile on

# Supplemental configuration
#
# Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf          #引用conf.d/下所有已conf结尾的文件,那么就把配置文件复制到这个下面,并重命名已conf结尾
[root@MYSQL conf.d]# cp /usr/local/src/zapache-master/httpd-server-status.conf.sample /etc/httpd/conf.d/httpd-server-status.conf
修改配置文件、
[root@MYSQL conf.d]# vim httpd-server-status.conf 
<Location /server-status>
    SetHandler server-status
    Order deny,allow
    Allow from 10.10.100.0/24 127.0.0.1     访问白名单IP
</Location>

重启服务
[root@MYSQL conf.d]# systemctl restart httpd
然后在网页访问测试
http://10.10.100.46/server-status
当前apache运行的状态
在这里插入图片描述

[root@MYSQL zapache-master]# ll
总用量 124
-rw-r--r--. 1 root root   676 4月  22 2016 httpd-server-status.conf.sample
-rw-r--r--. 1 root root  1780 4月  22 2016 README.md
-rw-r--r--. 1 root root   224 4月  22 2016 userparameter_zapache.conf.sample
-rwxr-xr-x. 1 root root  6110 4月  22 2016 zapache
-rw-r--r--. 1 root root 52258 4月  22 2016 zapache-template-active.xml
-rw-r--r--. 1 root root 52024 4月  22 2016 zapache-template.xml

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

下一步,就要确认/usr/local/zabbix/etc/zabbix_agentd.conf.d/这个下面的配置文件都能读取到

[root@MYSQL zapache-master]# vim /usr/local/zabbix/etc/zabbix_agentd.conf

在这里插入图片描述
这个默认是关闭的,所以要把它开启,路径不对就修改一下

在这里插入图片描述

[root@MYSQL zapache-master]# cd /usr/local/zabbix/etc/zabbix_agentd.conf.d
[root@MYSQL zabbix_agentd.conf.d]# mv userparameter_zapache.conf.sample userparameter_zapache.conf
[root@MYSQL zabbix_agentd.conf.d]# vim userparameter_zapache.conf
#
# This is a sample zabbix_agentd config file.
# Put it to /etc/zabbix_agentd.conf.d or otherwise integrate into agent config.
# Edit to your needs.
#
UserParameter=zapache[*],/var/lib/zabbixsrv/externalscripts/zapache \$1  #修改成可执行文件的路径

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

[root@MYSQL zabbix_agentd.conf.d]# ll /usr/local/bin/
总用量 8
-rwxr-xr-x. 1 root root 6110 11月  6 22:34 zapache

接下来在网页上进行配置
把模板文件zapache-template.xml导出来
[root@MYSQL zapache-master]# sz zapache-template.xml
在这里插入图片描述
保存到桌面
导入模板文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
选择导入的模板
在这里插入图片描述
在这里插入图片描述

配置 zabbix 监控 MySQL

和监控我们的 Apache 一样,寻找合适的脚本,不过,脚本并不是那么容易就可以找得到的! 要么自己手动去写,要么自己找到的拿来修改,都是需要花费代价的!ZABBIX 默认提供了 MYSQL 的监控模板
在被监控的服务器上操作
数据库用户授权
mysql> grant usage on . to zabbix@’%’ identified by ‘Admin23!@#’;
mysql> flush privileges;
到zabbix源码包里面有个自带的配置文件
[root@localhost zabbix_agentd]# cd /usr/local/src/zabbix-4.4.1/conf/zabbix_agentd
[root@localhost zabbix_agentd]# ll
总用量 8
-rw-r–r--. 1 1001 1001 1359 10月 28 21:48 userparameter_examples.conf
-rw-r–r--. 1 1001 1001 1081 10月 28 21:48 userparameter_mysql.conf
[root@localhost zabbix_agentd]# cp /usr/local/src/zabbix-4.4.1/conf/zabbix_agentd/userparameter_mysql.conf /usr/local/zabbix/etc/zabbix_agentd.conf.d/

启用并修改
建立数据库和 zabbix 的链接信息

[root@localhost zabbix_agentd]#vim /usr/local/zabbix/etc/.my.cnf  #创建一个隐藏文件
#Zabbix Agent 
[mysql] 
host=10.10.100.39
user=zabbix
password=Admin23!@#
socket= /usr/local/mysql/run/mysql.sock
[mysqladmin] 
host=10.10.100.39
user=zabbix
password=Admin23!@#
socket= /usr/local/mysql/run/mysql.sock
[root@localhost zabbix_agentd]#vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/userparameter_mysql.conf
将 HOME=/var/lib/zabbix 全部改成 HOME=/usr/local/zabbix/etc/


#template_db_mysql.conf created by Zabbix for "Template DB MySQL" and Zabbix 4.2
#For OS Linux: You need create .my.cnf in zabbix-agent home directory (/var/lib/zabbix by default) 
#For OS Windows: You need add PATH to mysql and mysqladmin and create my.cnf in %WINDIR%\my.cnf,C:\my.cnf,BASEDIR\my.cnf https://dev.mysql.com/doc/refman/5.7/en/option-files.html
#The file must have three strings:
#[client]
#user=zbx_monitor
#password=<password>
#
UserParameter=mysql.ping[*], mysqladmin -h"$1" -P"$2" ping
UserParameter=mysql.get_status_variables[*], mysql -h"$1" -P"$2" -sNX -e "show global status"
UserParameter=mysql.version[*], mysqladmin -s -h"$1" -P"$2" version
UserParameter=mysql.db.discovery[*], mysql -h"$1" -P"$2" -sN -e "show databases"
UserParameter=mysql.dbsize[*], mysql -h"$1" -P"$2" -sN -e "SELECT SUM(DATA_LENGTH + INDEX_LENGTH) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='$3'"
UserParameter=mysql.replication.discovery[*], mysql -h"$1" -P"$2" -sNX -e "show slave status"
UserParameter=mysql.slave_status[*], mysql -h"$1" -P"$2" -sNX -e "show slave status"

重启agentd
模板应用主机

在zabbix服务端操作

Zabbix邮件报警配置:
邮件服务可以使用系统自带的邮件服务来发送邮件或者使用其他邮件服务调用第三方邮件来发送警告邮件
这里演示如何调用第三方邮件服务来发送邮件:
第一步:首先安装mailx组件并配置好能够通过三方邮箱发送邮件
[root@localhost ldap]# yum install mailx
然后编辑mailx的配置文件
[root@localhost ldap]# vim /etc/mail.rc
在最末尾添加如下
信息
set from=zabbix@163.com
set smtp=smtp.163.com
set smtp-auth-user=zabbix@163.com
set smtp-auth-password=你的密码 注意:此为163邮箱设置的客户端授权密码
set smtp-auth=login

这里的xxxxxx@163.com 表示发送账号
[root@localhost ldap]# echo “zabbix test mail” |mailx -s "zabbix"XXXX@qq.com

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

[root@localhost ldap]# cd /usr/local/zabbix/share/zabbix/alertscripts/
[root@localhost 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@localhost alertscripts]#chown zabbix.zabbix sendmail.sh 
[root@localhost alertscripts]#chmod +x  sendmail.sh

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

[root@localhost alertscripts]#vim /usr/local/zabbix/etc/zabbix_server.conf
修改:
# AlertScriptsPath=${datadir}/zabbix/alertscripts
为
AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts

[root@localhost alertscripts]#chmod 777 /tmp/sendmail.log
[root@localhost alertscripts]#/usr/local/zabbix/share/zabbix/alertscripts/sendmail.sh 136xxx@126.com “测试邮件标题” “测试邮件内容”
页面添加:
在这里插入图片描述
在这里插入图片描述
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
很多人安装zabbix 3.0之后,写的脚本一直发信不成功,手动执行时可以的。
这是因为zabbix3.0之后,可以自定义参数了。所以不写参数,它是不会传参数的。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
内容如下
动作
在这里插入图片描述
操作
默认接收人:故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
默认信息:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID:{EVENT.ID}
在这里插入图片描述
在这里插入图片描述
恢复操作
默认接收人:已恢复!{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}
恢复信息:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID:{EVENT.ID}
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
测试,关闭 zabbix 客户端服务 zabbix_agentd 延迟比较大,大概要5-10分钟
可以在日志看送达状态
在这里插入图片描述
参考:
http://thedream.blog.51cto.com/6427769/1827984
http://xiao987334176.blog.51cto.com/2202382/1768339
http://clovemfong.blog.51cto.com/3297559/1702105
https://ywwd.net/read-1044
http://www.cnblogs.com/Eivll0m/p/5446993.html
配置 zabbix 自动发现并监控(监控Windows为案例)

首先下载安装Windows端agent
在这里插入图片描述
找到conf下的配置文件 zabbix_agentd.win.conf (建议用文本编辑软件打开),修改LogFile、Server、ServerActive、Hostname这四个参数。具体配置如下:
LogFile=c:\zabbix_agentd.log
Server=10.10.100.39
Hostname=download
ServerActive=10.10.100.39#zabbix server地址
其中logfile是zabbix日志存放地址。Server 是zabbix服务端ip地址。Hostname是本机机器名。
一定要以管理员身份来运行CMD,否则安装不了
cd C:\Users\Administrator\Desktop\zabbix_agents_4.4.1.win\bin\win64
安装windos zabbix客户端
zabbix_agentd.exe
C:\Users\Administrator\Desktop\zabbix_agents_4.4.1.win\conf\zabbix_agentd.win.conf -i
启动客户端
zabbix_agentd.exe -c C:\Users\Administrator\Desktop\zabbix_agents_4.4.1.win\conf\zabbix_agentd.win.conf -s
创建自动发现规则
在这里插入图片描述
在这里插入图片描述
添加关联动作
在这里插入图片描述
在这里插入图片描述
操作-可添加发现主机发送邮件通知
发送模版
默认接收人自动发现主机: {DISCOVERY.DEVICE.STATUS} {DISCOVERY.DEVICE.IPADDRESS}
默认信息
发现规则: {DISCOVERY.RULE.NAME}

设备IP:{DISCOVERY.DEVICE.IPADDRESS}
设备DNS: {DISCOVERY.DEVICE.DNS}
设备状态: {DISCOVERY.DEVICE.STATUS}
设备运行时间: {DISCOVERY.DEVICE.UPTIME}
设备服务端口: {DISCOVERY.SERVICE.NAME}
在这里插入图片描述
可以发现自动探测监控了

微信ZABBIX报警

简介

微信作为日常使用最频繁的工具,因此希望将微信接入zabbix报警。

微信企业号

1.申请微信企业号
申请后,请在“我的企业”页面下记录企业号的CorpID

2.添加通讯录

部门添加完成后,根据实际情况添加子部门或相关成员,如下:

3.创建应用
在“企业应用”页面创建应用

注意: 可见范围一定要添加需要收到报警的人员或部门,否则zabbix报警信息无法推送到相关人员。

创建完成如下:

至此,微信企业号的配置完成。

zabbix server端配置

一.微信报警脚本
默认将脚本放到/usr/local/zabbix/share/zabbix/alertscripts即可,由于我在脚本中打印日志,因此请添加权限。

#!/usr/bin/env python
#-- coding: utf-8 --
#author: yanggd
#date: 2018-04-20
#comment: zabbix接入微信报警脚本

import requests
import sys
import os
import json
import logging

logging.basicConfig(level = logging.DEBUG, format = ‘%(asctime)s, %(filename)s, %(levelname)s, %(message)s’,
datefmt = ‘%a, %d %b %Y %H:%M:%S’,
filename = os.path.join(’/usr/local/zabbix/share/zabbix/alertscripts’,‘weixin.log’),
filemode = ‘a’)

corpid=‘wwbbaxxxxxx’
appsecret=‘m2HUZXUxxxxxxxxxx’
agentid=1000004
#获取accesstoken
token_url=‘https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=’ + corpid + ‘&corpsecret=’ + appsecret
req=requests.get(token_url)
accesstoken=req.json()[‘access_token’]

#发送消息
msgsend_url=‘https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=’ + accesstoken

touser=sys.argv[1]
subject=sys.argv[2]
#toparty=‘3|4|5|6’
message=sys.argv[3]

params={
“touser”: touser,

“toparty”: toparty,

“msgtype”: “text”,
“agentid”: agentid,
“text”: {
“content”: message
},
“safe”:0
}

req=requests.post(msgsend_url, data=json.dumps(params))

logging.info(‘sendto:’ + touser + ‘;;subject:’ + subject + ‘;;message:’ + message)

#添加权限
chmod +x weixin.py
touch weixin.log
chown zabbix.zabbix weixin.log

企业号开发文档请官方文档企业微信API:
开始开发
发送应用消息

脚本说明:
1.corpid、appsecret、agentid就是我们需要从企业号和应用中获取到的信息,其中.corpid、appsecret用于获取accesstoken,agentid用于往应用发送消息
2.由于zabbix会往脚本中传入3个参数,分别为sendto(收件人)、subject(报警主题)、message(报警信息)。这3个参数需要在zabbix中配置,我们下面会讲到。

此脚本中我们没有接受subject参数,而是直接使用sendto及message参数。
另经测试添加toparty部门变量后,发现报警信息会重复发送,因此在此注释掉。
具体的报警发送信息,我们通过脚本打印在日志weixin.log中。

二、zabbix配置
1.报警媒介类型

zabbix3.4版本要添加这三个参数,用于发给weixin.py。
2.添加动作
事件源选择“触发器”,然后“创建动作”
(1)动作

注意:计算方式”与/或”,当维护状态非在维护 and 任意一个模板项有问题时,会触发此动作。
(2)操作

“默认信息”就是发送到weixin.py脚本的message
“操作”可以定义此动作发送的接收人或接受组

#方便拷贝
Problem started at {EVENT.TIME} on {EVENT.DATE}
Problem name: {TRIGGER.NAME}
Host: {HOST.NAME}
Severity: {TRIGGER.SEVERITY}

Problem description: {ITEM.NAME}:{ITEM.VALUE}
{TRIGGER.URL}

(3)恢复操作

此操作就是故障恢复时发送恢复报警信息。

#方便拷贝
Problem has been resolved at {EVENT.RECOVERY.TIME} on {EVENT.RECOVERY.DATE}
Problem name: {TRIGGER.NAME}
Host: {HOST.NAME}
Severity: {TRIGGER.SEVERITY}

Problem description: {ITEM.NAME}:{ITEM.VALUE}
{TRIGGER.URL}

(4)确认操作

此操作就是监控人员在zabbix网页中确认问题并关闭问题后发送的确认信息,这也是3.4版本和某些低版本不同的地方。

#方便拷贝
{USER.FULLNAME} acknowledged problem at {ACK.DATE} {ACK.TIME} with the following message:
{ACK.MESSAGE}

Current problem status is {EVENT.STATUS}

3.给用户添加报警媒介
管理–用户,选择属于web_admin组中的一个用户,然后选择“报警媒介”-“添加”

注意:收件人为企业号-通讯录中成员账号,是成员的唯一标识。

三、测试
当上面的几步操作完成后,我们先对脚本进行测试。

#最好使用zabbix用户测试,来排除权限问题
python weixin.py opt test test
#opt为消息接收账号

执行完成后,企业号就会收到测试信息,然后再停止某一服务,通过zabbix报警查看微信是否能接收到信息。

weixin.py脚本通过zabbix报警使用的是zabbix用户,因此请确认脚本及日志是否具有权限。

微信报警信息如下:
第一条是报警信息
第二条是故障恢复信息

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rio520

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值