官方网站: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用户,因此请确认脚本及日志是否具有权限。
微信报警信息如下:
第一条是报警信息
第二条是故障恢复信息