阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Zabbix Proxy 分布式监控

123次阅读
没有评论

共计 9104 个字符,预计需要花费 23 分钟才能阅读完成。

简介:

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.linuxidc.com/Linux/2016-03/129645.htm)

2、安装 Zabbix Proxy

# 需要安装 MySQL (传送门:http://www.linuxidc.com/Linux/2016-03/129643.htm)

下载地址: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.5.tar.gz
shell > cd zabbix-2.4.5
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.5/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.5/database/mysql/schema.sql # 导入数据,只导入这一个就可以了

shell > grep -vP ‘^$|#’ /usr/local/zabbix/etc/zabbix_proxy.conf # 修改完后的配置文件如下 (当然还有一些性能方面的参数,这里没有列出)

ProxyMode=0                    # 0 代表 Proxy 处于主动模式,即:Proxy 主动去请求 Zabbix Server 获取监控项;1 代表被动模式
Server=192.168.214.40          # Zabbix Server 地址,当 Proxy 处于被动模式时,不需要设置该项 (想想也能明白)
ServerPort=10051              # Zabbix Server 监听端口,同上只在 Proxy 为主动模式时生效
Hostname=my_proxy              # 这个很重要啦,跟 Agent 的 Hostname 一样重要,待会要用
LogFile=/tmp/zabbix_proxy.log  # Proxy 日志文件位置
DBHost=localhost              # 连接哪里的数据库
DBName=proxydb                # 数据库名
DBUser=proxy                  # 连接用户
DBPassword=proxypass          # 用户密码
ConfigFrequency=60            # Proxy 向 Zabbix Server 请求监控项间隔,单位为 秒
DataSenderFrequency=60        # 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:10051 0.0.0.0:* LISTEN 16073/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:10050 0.0.0.0:* LISTEN 16148/zabbix_agentd

shell > chkconfig –add zabbix_agentd # 加入开机启动
shell > chkconfig –level 35 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.5.tar.gz
shell > cd zabbix-2.4.5
shell > ./configure –prefix=/usr/local/zabbix –enable-agent # 安装 Agent
shell > make install

shell > cp /usr/local/src/zabbix-2.4.5/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:10050 0.0.0.0:* LISTEN 16148/zabbix_agentd

shell > chkconfig –add zabbix_agentd # 加入开机启动
shell > chkconfig –level 35 zabbix_agentd on

shell > iptables -A INPUT -p tcp –dport 10050 -j ACCEPT # 由于 Agent 使用被动模式,所以要开启 TCP 10050 端口等待 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=1                      # 1 代表被动模式,即: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:0 172.16.0.50/16 up # 添加一个模拟的内网地址

shell > vim /etc/sysctl.conf # 开启路由转发功能

net.ipv4.ip_forward = 1

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=1                      # 1 代表被动模式,即: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=0              # 0 代表 Proxy 处于主动模式,即:Proxy 主动去请求 Zabbix Server 获取监控项
Server=192.168.214.40    # Zabbix Server 地址,当 Proxy 处于被动模式时,不需要设置该项 (想想也能明白)
ServerPort=10051          # Zabbix Server 监听端口,同上只在 Proxy 为主动模式时生效
Hostname=my_proxy        # 这个很重要啦,跟 Agent 的 Hostname 一样重要,待会要用
LogFile=/tmp/zabbix_proxy.log # Proxy 日志文件位置
DBHost=localhost              # 连接哪里的数据库
DBName=proxydb                # 数据库名
DBUser=proxy                  # 连接用户
DBPassword=proxypass          # 用户密码
ConfigFrequency=60            # Proxy 向 Zabbix Server 请求监控项间隔,单位为 秒
DataSenderFrequency=60        # Proxy 向 Zabbix Server 发送监控数据间隔,单位为 秒

shell > route add -net 172.16.0.0/16 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 相关教程集合

Ubuntu 14.04 下 Zabbix2.4.5 源码编译安装  http://www.linuxidc.com/Linux/2015-05/117657.htm

安装部署分布式监控系统 Zabbix 2.06 http://www.linuxidc.com/Linux/2013-07/86942.htm

《安装部署分布式监控系统 Zabbix 2.06》http://www.linuxidc.com/Linux/2013-07/86942.htm

CentOS 6.3 下 Zabbix 安装部署 http://www.linuxidc.com/Linux/2013-05/83786.htm

Zabbix 分布式监控系统实践 http://www.linuxidc.com/Linux/2013-06/85758.htm

CentOS 6.3 下 Zabbix 监控 apache server-status http://www.linuxidc.com/Linux/2013-05/84740.htm

CentOS 6.3 下 Zabbix 监控 MySQL 数据库参数 http://www.linuxidc.com/Linux/2013-05/84800.htm

64 位 CentOS 6.2 下安装 Zabbix 2.0.6   http://www.linuxidc.com/Linux/2014-11/109541.htm

ZABBIX 的详细介绍:请点这里
ZABBIX 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-03/129650.htm

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计9104字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中