Zabbix Proxy 分布式监控
简介:
Zabbix 是一个分布式监控系统,它可以以一个中心点、多个分节点的模式运行,使用 proxy 能降低 Zabbix Server 的压力,当然也带来了成本~
适用范围:跨机房、跨地域的网络监控系统,可以监控拥有不可靠网络连接的区域,简化分布式监控的维护,分担 Zabbix Server 压力
例子:
公司有个项目或多个项目,在不同地域都有大批量的服务器需要被监控
总不能一个地域搭建一个 Zabbix Server 吧,这样即不方便管理、也浪费资源,如果就一台 Zabbix Server 监控所有机器,又需要该机器有很好的性能 ( 机器量大,一台基本不可能实现 )
这时就可以使用 Proxy ,将 Zabbix Server 架设在公司内部或某个地方,每个地域放一台 Proxy 来收集该地域 Agent 的数据,然后传给 Zabbix Server 。这样是不是很方便 ?
一、Zabbix Proxy 主动模式 ( 可以用在 Proxy 没有公网 IP ,但是可以访问公网的情况下 )
Zabbix Server <- Zabbix Proxy -> Zabbix Agent
## 这次做的是 Proxy 的主动模式,所以是 Proxy 去请求 Zabbix Server,由于 Zabbix Agent 用的是被动模式,所以也是由 Zabbix Proxy 去请求 Zabbix Agent
Zabbix Server:192.168.214.40
Zabbix Proxy :192.168.214.10
Zabbix Agent :192.168.214.20
1、安装 Zabbix Server ( 传送门:http://www.cnblogs.com/wangxiaoqiangs/p/5336210.html)
2、安装 Zabbix Proxy
# 需要安装 Mysql ( 传送门:http://www.cnblogs.com/wangxiaoqiangs/p/5336048.html )
下载地址:http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.4.5/zabbix-2.4.5.tar.gz
shell > useradd -r -s /sbin/nologin zabbix # 创建 Zabbix 运行用户 shell > wget http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.4.5/zabbix-2.4.5.tar.gz shell > tar zxf zabbix-2.4..tar.gz
shell > cd zabbix-2.4.
shell > ./configure --prefix=/usr/local/zabbix --enable-agent --enable-proxy --with-mysql # --enable-agent 不是必须的 ( 如果不想监控 Proxy 的话 )
shell > make install shell > cp /usr/local/src/zabbix-2.4./misc/init.d/fedora/core/zabbix_agentd /etc/init.d/ # 复制 Agent 启动脚本
shell > sed -i 's#BASEDIR=/usr/local#BASEDIR=/usr/local/zabbix#' /etc/init.d/zabbix_agentd # 修改 Zabbix 安装路径 shell > mysql mysql> create database proxydb character set utf8; # 创建数据库
mysql> grant all on proxydb.* to proxy@localhost identified by 'proxypass'; # 创建授权用户
mysql> flush privileges; # 刷新授权表,虽然不需要~
mysql> use proxydb;
mysql> source /usr/local/src/zabbix-2.4./database/mysql/schema.sql # 导入数据,只导入这一个就可以了 shell > grep -vP '^$|#' /usr/local/zabbix/etc/zabbix_proxy.conf # 修改完后的配置文件如下 ( 当然还有一些性能方面的参数,这里没有列出 ) ProxyMode= # 代表 Proxy 处于主动模式,即:Proxy 主动去请求 Zabbix Server 获取监控项; 代表被动模式
Server=192.168.214.40 # Zabbix Server 地址,当 Proxy 处于被动模式时,不需要设置该项 ( 想想也能明白 )
ServerPort= # Zabbix Server 监听端口,同上只在 Proxy 为主动模式时生效
Hostname=my_proxy # 这个很重要啦,跟 Agent 的 Hostname 一样重要,待会要用
LogFile=/tmp/zabbix_proxy.log # Proxy 日志文件位置
DBHost=localhost # 连接哪里的数据库
DBName=proxydb # 数据库名
DBUser=proxy # 连接用户
DBPassword=proxypass # 用户密码
ConfigFrequency= # Proxy 向 Zabbix Server 请求监控项间隔,单位为 秒
DataSenderFrequency= # Proxy 向 Zabbix Server 发送监控数据间隔,单位为 秒 shell > /usr/local/zabbix/sbin/zabbix_proxy # 启动 zabbix_proxy
shell > echo "/usr/local/zabbix/sbin/zabbix_proxy" >> /etc/rc.local # 加入开机启动 shell > netstat -lnpt | grep zabbix_proxy
tcp 0.0.0.0: 0.0.0.0:* LISTEN /zabbix_proxy
## 以上部分,Zabbix_proxy 就全部配置完了
shell > grep -vP '^$|#' /usr/local/zabbix/etc/zabbix_agentd.conf # 这是 Zabbix Proxy 上的 Agent 修改完后的配置文件
LogFile=/tmp/zabbix_agentd.log # Agent 日志文件位置
Server=192.168.214.10 # Zabbix Proxy 主机地址 ( 如果不使用 Proxy,就写 Zabbix Server 主机地址 ),这里是被动模式,即:Agent 等待连接
Hostname=proxy_agent # 同样很重要,标识自己的,一会用到 shell > service zabbix_agentd start # 启动 Agent shell > netstat -lnpt | grep zabbix_agentd
tcp 0.0.0.0: 0.0.0.0:* LISTEN /zabbix_agentd shell > chkconfig --add zabbix_agentd # 加入开机启动
shell > chkconfig --level zabbix_agentd on
## 这上面这段是对 Agent 的配置
3、安装 Zabbix Agent
shell > useradd -r -s /sbin/nologin zabbix # 创建 Zabbix 运行用户 shell > wget http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.4.5/zabbix-2.4.5.tar.gz shell > tar zxf zabbix-2.4..tar.gz
shell > cd zabbix-2.4.
shell > ./configure --prefix=/usr/local/zabbix --enable-agent # 安装 Agent
shell > make install shell > cp /usr/local/src/zabbix-2.4./misc/init.d/fedora/core/zabbix_agentd /etc/init.d/ # 复制 Agent 启动脚本
shell > sed -i 's#BASEDIR=/usr/local#BASEDIR=/usr/local/zabbix#' /etc/init.d/zabbix_agentd # 修改 Zabbix 安装路径 shell > grep -vP '^$|#' /usr/local/zabbix/etc/zabbix_agentd.conf # 这是 Zabbix Proxy 上的 Agent 修改完后的配置文件
LogFile=/tmp/zabbix_agentd.log # Agent 日志文件位置
Server=192.168.214.10 # Zabbix Proxy 主机地址 ( 如果不使用 Proxy,就写 Zabbix Server 主机地址 ),这里是被动模式,即:Agent 等待连接
Hostname=node1_agent # 同样很重要,标识自己的,一会用到 shell > service zabbix_agentd start # 启动 Agent shell > netstat -lnpt | grep zabbix_agentd
tcp 0.0.0.0: 0.0.0.0:* LISTEN /zabbix_agentd shell > chkconfig --add zabbix_agentd # 加入开机启动
shell > chkconfig --level zabbix_agentd on shell > iptables -A INPUT -p tcp --dport -j ACCEPT # 由于 Agent 使用被动模式,所以要开启 TCP 端口等待 Server 或 Proxy 连接
shell > service iptables save
## 以上部分就对 Zabbix Proxy , Zabbix Agent 全部做完了,剩下的部分在 Zabbix Server 的 Web 界面完成!
> Administration -> Proxies -> Create proxy
Proxy name : my_proxy # 这里写的是 Zabbix Proxy 配置文件中的 Hostname,必须要写对
Proxy mode : Active # 这里选择主动模式,因为 Zabbix Proxy 的配置文件中定义的是 0 ,主动模式
> Update # 直接 Update 就可以了,如果主机已经事先添加好了,这里可以将对应的主机加入 Proxy hosts !其实都一样
> Configuration -> Hosts -> Create host
Host name : node1_agent # 这里写的是 Zabbix Agent 配置文件中的 Hostname,必须写对
Visible name : # 可写可不写,就是个显示的名称
Groups In groups : # 将该主机放入哪个分组,可以通过下面的 New group 自定义一个分组
New group : Proxy # 自定义的分组
Agent interfaces : 192.168.214.20 # Agent 主机 IP,监控哪台主机,写哪台主机的地址
Monitored by proxy : my_proxy # 选择之前创建的代理
> Templates # 第二个选项卡,选择一个模板链接到主机
> Update
## 这样就添加好了一个主机,并且使用了 my_proxy 代理模式
## 现在就可以去经过 Proxy 代理的 Agent 状态了! 一切正常
二、Zabbix Proxy 被动模式 ( 可以用在 Zabbix Server 没有公网 IP ,但是可以访问公网的情况下 )
Zabbix Server -> Zabbix Proxy -> Zabbix Agent
## 这次做的是 Proxy 的被动模式,所以是 Zabbix Server 主动向 Proxy 发送监控项,Proxy 被动接收数据,由于 Zabbix Agent 用的是被动模式,所以由 Zabbix Proxy 去请求 Zabbix Agent
Zabbix Server:192.168.214.40
Zabbix Proxy :192.168.214.10
Zabbix Agent :192.168.214.20
## 环境还是这个环境,下面给出一些有变动、注意的地方
1、Zabbix Proxy 的配置文件
shell > grep -vP '^$|#' /usr/local/zabbix/etc/zabbix_proxy.conf
ProxyMode= # 代表被动模式,即:Proxy 被动接收 Zabbix Server 发来的监控项
Hostname=my_proxy
LogFile=/tmp/zabbix_proxy.log
DBHost=localhost
DBName=proxydb
DBUser=proxy
DBPassword=proxypass
## 由于是被动模式,所以不需要知道 Zabbix Server 的 IP
2、Zabbix Agent 还使用原来的配置文件即可
3、Zabbix Server 中 Web 界面添加 Proxy 时需要注意
> Administration -> Proxies -> Create proxy
Proxy name : my_proxy # 这里写的是 Zabbix Proxy 配置文件中的 Hostname,必须要写对
Proxy mode : Passive # 这里选择被动模式,因为 Zabbix Proxy 的配置文件中定义的是 1 ,被动模式
## 其余的都可以不变,就完成了 Proxy 的被动模式代理
## Proxy 的主、被动模式,跟将要被代理的 Agent 没有关系,Zabbix Server 能不能直接访问到 Agent 都不重要,只要 Proxy 能访问到 Agent ,Server 能访问到 Proxy 就可以 !
三、再来模拟一种情况
Zabbix Server <-> Route <-> Zabbix Proxy -> Zabbix Agent
## 这种情况:Proxy 跟 Agent 处于一个网段,并只有一个 IP ,Zabbix Server 又处于另一个地域的监控
## 这里的 <-> 指 Proxy 的不同模式,可以忽略
例子:Zabbix Server 安装在了公司内部,Proxy 跟 Agent 在外省的某个机房中,并且处于局域网中,它们通过路由连接外网
Zabbix Server:192.168.214.40
Zabbix Proxy :172.16.0.10
Zabbix Agent :172.16.0.20
Route : 192.168.214.30 ( 外 )
: 172.16.0.50 ( 内 )
1、假定我已经将 Zabbix Server 映射到了公司的公网 IP ( 这个很好实现对吧 ) ,我现在的 Zabbix Server 的 IP 为 192.168.214.40
2、模拟路由
shell > ifconfig eth0: 172.16.0.50/ up # 添加一个模拟的内网地址 shell > vim /etc/sysctl.conf # 开启路由转发功能 net.ipv4.ip_forward = shell > sysctl -p # 使改变生效 shell > iptables -t nat -A PREROUTING -d 192.168.214.30 -j DNAT --to 172.16.0.10
shell > iptables -t nat -A POSTROUTING -d 172.16.0.10 -j SNAT --to 172.16.0.50
# 添加两条防火墙规则
## 测试:可以用一个比较笨,但是又很有效的方法来测试,Proxy 上装个 httpd ,然后用 curl 或直接浏览器访问 214.30 看能不能访问到 0.10 上的 httpd ;或用 nmap 扫描端口
3、Zabbix Proxy 配置文件 ( 这里使用被动模式,主动也可以哦 )
shell > grep -vP '^$|#' /usr/local/zabbix/etc/zabbix_proxy.conf
ProxyMode= # 代表被动模式,即:Proxy 被动接收 Zabbix Server 发来的监控项
Hostname=my_proxy
LogFile=/tmp/zabbix_proxy.log
DBHost=localhost
DBName=proxydb
DBUser=proxy
DBPassword=proxypass
4、Zabbix Agent 配置文件
shell > grep -vP '^$|#' /usr/local/zabbix/etc/zabbix_agentd.conf
LogFile=/tmp/zabbix_agentd.log
Server=172.16.0.10 # Zabbix Proxy 主机 IP
Hostname=node1_agent
5、Zabbix Server 中 Web 界面的配置
关于主机添加:
Agent interfaces : 172.16.0.20 # 被监控的主机 IP 、端口,其实都跟正常添加一样
关于 Proxy:
Proxy mode : Passive # 被动模式
Interface : 192.168.214.30 # Route 的公网 IP ,因为对这个地址的请求已经转到了实际的 Proxy 主机
## OK ,有路由的这种两边局域网的环境也用 Proxy 解决了监控问题了 !
四、没有路由,但是 Proxy 有两个 IP 地址,Zabbix Server 无法直接访问到 Agent
Zabbix Server <-> Zabbix Proxy -> Zabbix Agent
## 来看看这种情况:Proxy 与 Agent 处于同一局域网,同时 Proxy 自身有公网 IP 能与 Zabbix Server 通信,但是 Server 无法直接访问到 Agent
Zabbix Server:192.168.214.40
Zabbix Proxy :192.168.214.10 ( 外 )
172.16.0.10 ( 内 )
Zabbix Agent :172.16.0.20
1、Proxy 主机设置
shell > grep -vP '^$|#' /usr/local/zabbix/etc/zabbix_proxy.conf ( 这里使用主动模式,被动模式也可以哦 ) ProxyMode= # 代表 Proxy 处于主动模式,即:Proxy 主动去请求 Zabbix Server 获取监控项
Server=192.168.214.40 # Zabbix Server 地址,当 Proxy 处于被动模式时,不需要设置该项 ( 想想也能明白 )
ServerPort= # Zabbix Server 监听端口,同上只在 Proxy 为主动模式时生效
Hostname=my_proxy # 这个很重要啦,跟 Agent 的 Hostname 一样重要,待会要用
LogFile=/tmp/zabbix_proxy.log # Proxy 日志文件位置
DBHost=localhost # 连接哪里的数据库
DBName=proxydb # 数据库名
DBUser=proxy # 连接用户
DBPassword=proxypass # 用户密码
ConfigFrequency= # Proxy 向 Zabbix Server 请求监控项间隔,单位为 秒
DataSenderFrequency= # Proxy 向 Zabbix Server 发送监控数据间隔,单位为 秒 shell > route add -net 172.16.0.0/ gw 172.16.0.10 # 添加一条路由,否则会监控失败 ( 注意啦 !)
2、Zabbix Agent 配置文件
shell > grep -vP '^$|#' /usr/local/zabbix/etc/zabbix_agentd.conf
LogFile=/tmp/zabbix_agentd.log
Server=172.16.0.10 # Zabbix Proxy 主机 IP ( 这里是内网 IP ,因为 Agent 是访问不到外网的 )
Hostname=node1_agent
3、Zabbix Server 中 Web 界面的配置
关于主机添加:
Agent interfaces : 172.16.0.20 # 被监控的主机 IP 、端口,其实都跟正常添加一样
关于 Proxy:
Proxy mode : Active # 主动模式,配置文件中定义 ( 如果使用被动模式,下面写的 IP 就是 Proxy 的公网 IP )
Zabbix Proxy 分布式监控的更多相关文章
- zabbix proxy分布式监控部署
一.proxy分布式监控介绍 来源于zabbix官网: https://www.zabbix.com/documentation/3.4/zh/manual/distributed_monitorin ...
- (33)zabbix proxy分布式监控配置
概述 zabbix proxy可以代替zabbix server检索客户端的数据,然后把数据汇报给zabbix server,并且在一定程度上分担了zabbix server的压力.zabbix pr ...
- 【Zabbix】分布式监控系统Zabbix【一】
一.Zabbix功能及特性简介 Zabbix可以获取cpu,内存,网卡,磁盘,日志等信息 1.Zabbix数据收集方式: a.Agent客户端(Agent客户端支持多平台部署) b.如果是无法安装客户 ...
- Grafana + Zabbix --- 部署分布式监控系统
阅读目录: 1. 关闭防火墙 2. 安装Zabbix下载源 3. ZabbixClient --- 安装zabbix-agent代理 4. ZabbixServer --- 安装zabbix-ser ...
- 【Zabbix】分布式监控系统Zabbix【二】
一.Zabbix基本操作 1.主机群组.主机.模板.触发器 a.创建主机群组和主机的过程比较简单,不再介绍 b.配置模板: 创建一个模板,将其分组到Template组,添加配置应用: 给应用创建监控项 ...
- 8、zabbix监控方式及分布式监控(04)
zabbix支持的监控方式 zabbix所能够显示的且可指定为监控接口类型的监控方式: Agent passive active SNMP:Simple Network Management Prot ...
- Zabbix-(七)分布式监控
Zabbix-(七)分布式监控 一.前言 Zabbix提供了一套分布式监控的方案,即使用Zabbix Proxy,本文记录使用Zabbix Proxy进行分布式监控. 官方所述Proxy的使用场景如下 ...
- 017-zabbix_proxy分布式监控部署
一.proxy分布式监控介绍 来源于zabbix官网: https://www.zabbix.com/documentation/3.4/zh/manual/distributed_monitorin ...
- zabbix 分布式监控(proxy)源码安装
安装分布式监控(代理节点) 1.下载软件zabbix-3.2.1.tar.gz 1.1 解压 wget http://nchc.dl.sourceforge.net/project/zabbix/ZA ...
随机推荐
- BZOJ1336 Balkan2002 Alien最小圆覆盖 【随机增量法】*
BZOJ1336 Balkan2002 Alien最小圆覆盖 Description 给出N个点,让你画一个最小的包含所有点的圆. Input 先给出点的个数N,2<=N<=100000, ...
- 当我们使用 MVVM 模式时,我们究竟在每一层里做些什么?
这篇文章不会说 MVVM 是什么,因为讲这个的文章太多了:也不会说 MVVM 的好处,因为这样的文章也是一搜一大把.我只是想说说我们究竟应该如何理解 M-V-VM,当我们真正开始写代码时,应该在里面的 ...
- 解读ASP.NET 5 & MVC6 ---- 系列文章
本系列的大部分内容来自于微软源码的阅读和网络,大部分测试代码都是基于VS RC版本进行测试的. 解读ASP.NET 5 & MVC6系列(1):ASP.NET 5简介 解读ASP.NET 5 ...
- I/O复用——select和poll
概述 I/O多路复用(multiplexing)的本质是通过一种机制(系统内核缓冲I/O数据),让单个进程可以监视多个文件描述符,一旦某个描述符就绪(一般是读就绪或写就绪),能够通知程序进行相应的读写 ...
- Java 设计模式之单例模式(一)
原文地址:Java 设计模式之单例模式(一) 博客地址:http://www.extlight.com 一.背景 没有太多原由,纯粹是记录和总结自己从业以来经历和学习的点点滴滴. 本篇内容为 Java ...
- Eclipse与IDEA快捷键对比
from:http://blog.csdn.net/dc_726/article/details/9531281 花了一天时间熟悉IDEA的各种操作,将各种快捷键都试了一下,感觉很是不错!于是就整理了 ...
- 8.Python编写登录接口
1.python需安装flask,在命令行窗口输入:pip3 install flask 2.代码如下所示: from flask import Flask,request,jsonify,sessi ...
- 优化html标签
借用Effective之名,开始写Effective系列,总结一些前端的心得. 有些人写页面会走向一个极端,几乎页面所有的标签都用div,究其原因,用div有很多好处,一个是div没有默认样式,不会有 ...
- angular(mvc)指令的嵌套使用
关于指令嵌套的使用,取值问题. 原理类似于控制器中使用指令,父指令类似于控制器,子指令就类似于控制器中指令.通过传值方式‘=’,我们直接可以在父指令中获取数据 举一个例子: 有个指令parentDir ...
- erlang里面中文相关处理
在控制台输出的话 Name = "测试数据", io:format("~ts~n",[Name]). 如果是和客户端通信,假如都是utf8编码 服务器获取的时候 ...