其实最快的方法就是弄 Docker,所以这是快速版搭建

我在公司做的是网络监控,主要是不同运营商的节点对不同省份地区的进行监测,评价网络质量主要是时延和丢包率,但我们不可能用 Ping -t 一直测,我也不知以前的同事为什么可以把用于服务器监控的 Zabbix 改造成只监测网络,所以我就把目前公司这个网络质量监测为基础,我的大学毕业论文就是写这个相关的。

背景

随着业务量的增多,根据领导或其他部门的同事的需求,我们也会对新的运营商出口搭建一个节点,主要是利用 Zabbix 的 “简单检查” 的功能,可以用 Zabbix-Proxy 对远程 IP 进行实时 ICMP 监测,当然这个 Zabbix 就自带这个模板,比较麻烦的在于怎么部署 Zabbix-Proxy,其实搭多了步骤也很清晰:

  1. Linux环境(主要用 CentOS)
  2. 部署 mariadb-server、添加 Zabbix-repo 源
  3. 修改配置文件
  4. 开启服务

前置

记得关掉 Selinux,防火墙要配好,可以连通 server 的IP,需要放行好 10050:10051 端口

搭建

本文以 3.x 为例,4.x 步骤一致,只是第一步就选对什么版本而已。配置基本照抄官方文档即可

打开 Zabbix 的官网,直接打开 Download 页

部署版本源

# rpm -Uvh https://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
# yum clean all

安装数据库、Zabbix-proxy

数据库我这边默认使用 MySQL,zabbix-agent 我也会顺便搭建,但不想监测节点健康的话可以跳过

# yum install mariadb-server zabbix-proxy

添加数据库

Zabbix-proxy 其实是无前端的 Zabbix-server,数据库架构要与 Zabbix-server 架构一致才能一起工作

# mysql -uroot -p
password # 其实一般用 yum 安装是没有密码的
mysql> create database zabbix character set utf8 collate utf8_bin;  # 建立 zabbix 数据库
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'password'; # 给 zabbix 数据库赋权,账号为 zabbix,密码为 password
mysql> flush privileges;  #刷新权限
mysql> quit;

导入 proxy 的 SQL 文件到数据库

用 zcat 命令解压并输出内容,利用管道导入到 zabbix 数据库

zcat /usr/share/doc/zabbix-proxy*/schema.sql.gz | mysql -u zabbix -p zabbix

改一波配置

前面都搭建好的话,那我们只需更改 proxy 的配置文件就好了。以下的关键点,善用 vim 的 "/" 的搜索功能

[root@izwzz ~]# cat /etc/zabbix/zabbix_proxy.conf | grep "^[^#]"
Server=103.x.x.x             # server 的 IP 地址
Hostname=aliyun88-sz         # 该 proxy 的名称,该名称在 server 前端添加名字就要输入这个
EnableRemoteCommands=1   # 是否开启远程命令(看业务)
DBName=zabbix  # 数据库名
DBUser=zabbix  # 数据库的用户名
DBPassword=password  # 数据库的密码

开启服务测试

我局的OK了,直接开启相应的服务。正式要使用的时候一定要记得 enable,否则服务器重启后服务不会自己起来

systemctl start mariadb
systemctl start zabbix-proxy

在 Server 前端添加主动式的 Zabbix-proxy

回到 Zabbix-proxy 的前端页面,点击 [管理] - [agent代理程序],再点击右上角创建代理,填写以下内容,其中 agent代理程序名称一定是配置文件的 Hostname 才行

图片1.png
(图片是用论文的图片,我懒得上前端了)

选择程序模式,我们一般是使用主动式,因为:

  • 主动式:Proxy 自己发送数据到 Server 服务器,适合内网穿透,分担 Server 压力,在监测内网交换机非常有用
  • 被动式:Server 自己去请求 Proxy 获取数据,需要有公网资源,消耗 Server 的网络资源

排障

如果那么长时间都没数据,那肯定配置有误,我这边先把我遇到的错误总结一下吧。

首先一定得打开日志文件:/var/log/zabbix/zabbix_proxy.log

  • 如果看到Permission denied,那肯定是 SELinux 没关,请百度
  • 如果看到host x.x.x.x unreached,那就是到达不了 Server 的 IP,需要检查防火墙或节点的安全组
  • 很久没监测数据,只需重启 zabbix-proxy 进程就能获取数据了

总结

QQ图片20200919231716.png

所以同事们快自己学会搭呀,别天天让我搭啊!!!!