分布式监控系统之Zabbix proxy
前文我们了解了zabbix 使用snmp和jmx信道采集数据的相关使用配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14029864.html;今天我们来说zabbix proxy;
1、zabbix proxy是什么?为什么要使用zabbix proxy?
简单讲zabbix proxy就是zabbix server的代理服务,它能帮助zabbix server采集数据,然后再统一的发送给zabbix server ;它的功能和zabbix server 很类似,zabbix server 能做到它几乎都能做;主要作用就是代理zabbix server ;我们知道监控一个主机或者服务,通常监控项有很多,每个监控项的数据采集工作都会消耗zabbix server 一个socket;这样一来监控一个主机少则十几个socket连接,多则几十个上百个;我们试想一个场景,我们要监控一个集群,这个集群有100台物理主机,每个物理主机都要监控cpu,内存,磁盘等等,一台服务器平均监控项为20个,那么100台服务器就要2000个socket连接;这意味着zabbix server要有2000个socket连接需要维持;这样一来无疑对zabbix server性能有很大的影响;为了降低zabbix server连接socket数量过大而带来的性能消耗,此时zabbix server就应该委托其他主机来代理收集数据;这个代理就是zabbix proxy;除了以上场景,比如跨机房的场景我们也需要用zabbix proxy,每个zabbix proxy只负责采集本地同一机房里的主机的数据,然后统一发送给zabbix server;这样一来可以减少zabbix server的socket连接数量,从而降低zabbix server的压力;
2、zabbix proxy内部组件
zabbix proxy主要由zabbix proxy和数据库组成;它这个数据库不是永久存储采集数据的,它可以将采集的数据临时存放在数据库中,当它把对应的数据发送给zabbix server以后,本地临时存储的数据就会清除;除了缓存采集的数据意外,它还可以用来存储在zabbix server上拉取的监控配置信息;
3、zabbix proxy 部署
准备yum仓库文件
[root@node03 ~]# scp /etc/yum.repos.d/zabbix.repo node06:/etc/yum.repos.d/
zabbix.repo 100% 242 164.4KB/s 00:00
[root@node03 ~]# scp /etc/yum.repos.d/mariadb.repo node06:/etc/yum.repos.d/
mariadb.repo 100% 129 116.6KB/s 00:00
[root@node03 ~]#
安装MariaDB-server
[root@node06 ~]# yum install -y MariaDB-server
配置数据库
[root@node06 ~]# cat /etc/my.cnf.d/zabbix_proxy.cnf
[mysqld]
bind-address = 0.0.0.0
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
skip_name_resolve
[root@node06 ~]#
启动mariadb
[root@node06 ~]# /etc/init.d/mysql start
Starting MariaDB.201125 22:12:03 mysqld_safe Logging to '/var/lib/mysql/node06.test.org.err'.
201125 22:12:03 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
SUCCESS!
[root@node06 ~]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:3306 *:*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
[root@node06 ~]#
设置root密码
[root@node06 ~]# mysql_secure_installation NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here. Enter current password for root (enter for none):
OK, successfully used password, moving on... Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation. Set root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success! By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment. Remove anonymous users? [Y/n] y
... Success! Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network. Disallow root login remotely? [Y/n] y
... Success! By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment. Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success! Reloading the privilege tables will ensure that all changes made so far
will take effect immediately. Reload privilege tables now? [Y/n] y
... Success! Cleaning up... All done! If you've completed all of the above steps, your MariaDB
installation should now be secure. Thanks for using MariaDB!
[root
创建数据库和用户授权
[root@node06 ~]# mysql -uroot -padmin123.com
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 11
Server version: 10.0.38-MariaDB MariaDB Server Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> grant all privileges on zabbix.* to zabbix_proxy@'192.168.%.%' identified by 'admin123.com';
Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]>
安装zabbix proxy
[root@node06 ~]# yum install -y zabbix-proxy-mysql
查看zabbix proxy 安装的文件
[root@node06 ~]# rpm -ql zabbix-proxy-mysql
/etc/logrotate.d/zabbix-proxy
/etc/zabbix/zabbix_proxy.conf
/usr/lib/systemd/system/zabbix-proxy.service
/usr/lib/tmpfiles.d/zabbix-proxy.conf
/usr/lib/zabbix/externalscripts
/usr/sbin/zabbix_proxy_mysql
/usr/share/doc/zabbix-proxy-mysql-4.0.26
/usr/share/doc/zabbix-proxy-mysql-4.0.26/AUTHORS
/usr/share/doc/zabbix-proxy-mysql-4.0.26/COPYING
/usr/share/doc/zabbix-proxy-mysql-4.0.26/ChangeLog
/usr/share/doc/zabbix-proxy-mysql-4.0.26/NEWS
/usr/share/doc/zabbix-proxy-mysql-4.0.26/README
/usr/share/doc/zabbix-proxy-mysql-4.0.26/schema.sql.gz
/usr/share/man/man8/zabbix_proxy.8.gz
/var/log/zabbix
/var/run/zabbix
[root@node06 ~]#
导入表
[root@node06 ~]# zcat /usr/share/doc/zabbix-proxy-mysql-4.0.26/schema.sql.gz |mysql -uzabbix_proxy -padmin123.com -h192.168.0.46 zabbix
[root@node06 ~]#
验证:查看对应数据库是否有表生成?
[root@node06 ~]# mysql -uzabbix_proxy -padmin123.com -h192.168.0.46 zabbix -e 'show tables;' |wc -l
145
[root@node06 ~]#
提示:能够统计到对应表的数量,说明我们导入表的操作没有问题;
配置zabbix proxy
[root@node06 ~]# grep -Ei "^[a-z]" /etc/zabbix/zabbix_proxy.conf
ProxyMode=0
Server=192.168.0.43
ServerPort=10051
HostnameItem=system.hostname
ListenPort=10051
LogFile=/var/log/zabbix/zabbix_proxy.log
LogFileSize=0
DebugLevel=3
PidFile=/var/run/zabbix/zabbix_proxy.pid
SocketDir=/var/run/zabbix
DBHost=192.168.0.46
DBName=zabbix
DBUser=zabbix_proxy
DBPassword=admin123.com
HeartbeatFrequency=60
ConfigFrequency=60
DataSenderFrequency=1
StartPollers=5
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
[root@node06 ~]#
提示:主要配置zabbix server的地址以及zabbix proxy的hostname和数据库相关的几个选项以及后面的心跳频率和配置文件更新频率以及数据发送频率;其他保持默认即可;这里需要提醒下,默认情况zabbix proxy 工作为主动模式,所谓主动模式是指zabbix proxy主动到zabbix server上获取监控配置和推送采集到数据;如果需要配置为被动,这需要将ProxyMode更改为1即可;Server是配置zabbix server的地址,意思是告诉proxy到到哪里获取配置以及将采集的数据推送到哪里;后面的HeartbeatFrequency是用来指定多长时间发送一次心跳信息给zabbix server,默认是60秒;ConfigFrequency是用来指定更新配置文件的频率,意思是多久去zabbix server 上同步一下监控配置;默认是3600;这个可以根据实际情况更改;DataSenderFrequency是用于指定多长时间发一次数据给zabbix server,默认为1秒;
启动zabbix proxy
[root@node06 ~]# systemctl start zabbix-proxy.service
[root@node06 ~]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:10051 *:*
LISTEN 0 128 *:3306 *:*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 128 :::10051 :::*
[root@node06 ~]#
提示:zabbix proxy 默认监听在10051,启动后请确保该端口正常监听;
安装zabbix agent用于监控zabbix proxy自身
[root@node06 ~]# yum install -y zabbix-agent
配置zabbix agent
[root@node06 ~]# grep -Ei "^[a-z]" /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=192.168.0.46
ListenPort=10050
ListenIP=0.0.0.0
ServerActive=192.168.0.46
HostnameItem=system.hostname
Include=/etc/zabbix/zabbix_agentd.d/*.conf
[root@node06 ~]#
提示:这里的配置和我们前边配置zabbix agent几乎一样,不同的是我们需要将Server指向zabbix proxy的地址和端口;如果其他agent需要用到proxy来代理,需要配置运行proxy来采集数据;这个Server的值可以是多个,分别用逗号隔开即可;同样ServerActive也应该指向zabbix proxy的地址;
启动zabbix agent
[root@node06 ~]# systemctl start zabbix-agent.service
[root@node06 ~]# ss -tnl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:10050 *:*
LISTEN 0 128 *:10051 *:*
LISTEN 0 128 *:3306 *:*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 128 :::10051 :::*
[root@node06 ~]#
在zabbix web界面配置添加zabbix proxy

提示:在administration--->proxIes---->create proxy点击进入新建proxy的页面;

提示:这里的proxy name必须和本地运行zabbix proxy服务主机名称相同;填写好proxy name以后点击添加即可;

添加主机,使用我们刚才添加到proxy来代理采集数据

提示:添加主机一定要选择对应要使用的zabbix proxy;
链接模板

提示:选择好模板以后,最后点击add将主机添加到主机列表;

提示:可以看到现在添加到主机,前边都有对应proxy的名称;过一会我们就可以看到proxy将模板上的监控数据采集后,发送给zabbix server,此时就可以看到对应的主机上的监控数据;
验证:查看对应主机是否有监控数据?

提示:可以看到node06链接的模板监控项也陆续有数据,说明proxy采集到数据已经发送给zabbix server ;
查看zabbix proxy状态

提示:可以看到现在node06.test.org这个proxy有一个host,34个item,vps为0.39;如果其他主机需要用该proxy代理采集数据,我们需要将对应的agent配置允许该proxy来采集数据;
到此,zabbix proxy的安装,测试就完成了;
分布式监控系统之Zabbix proxy的更多相关文章
- 分布式监控系统之Zabbix基础
1.为什么要使用监控系统? 我们知道一个系统不管怎么讲它都会出故障,我们为了保证线上业务的最大化的可用性,通常我们要给关键业务做高可用:做高可用的目的是为了让故障发生时,能够有一个备用的解决方案,将故 ...
- 分布式监控系统之Zabbix基础使用
前文我们了解了分布式监控系统zabbix的相关组件的作用和zabbix的部署,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13997582.html:今天我们 ...
- 分布式监控系统之Zabbix网络发现
前文我们了解了zabbix的宏,自定义item和模板的相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14013331.html:今天我们来了解下zab ...
- 分布式监控系统之Zabbix主动、被动及web监控
前文我们了解了zabbix的网络发现功能,以及结合action实现自动发现主机并将主机添加到zabbix hosts中,链接指定模板进行监控:回顾请参考https://www.cnblogs.com/ ...
- 分布式监控系统之Zabbix 使用SNMP、JMX信道采集数据
前文我们了解了zabbix的被动.主动以及web监控相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/14024212.html:今天我们来了解下zabb ...
- 分布式监控系统之Zabbix宏、模板和自定义item
前文我们聊了下zabbix的基础使用,包括主机的添加.监控项.触发器.action以及告警通知的配置,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/140073 ...
- Zabbix分布式监控系统实践
https://www.zabbix.com/wiki/howto/install/Ubuntu/ubuntuinstall 环境介绍OS: Ubuntu 10.10 Server 64-bitSer ...
- 分布式监控系统Zabbix-3.0.3-完整安装记录(0)
一.Linux下开源监控系统简单介绍1)cacti:存储数据能力强,报警性能差2)nagios:报警性能差,存储数据仅有简单的一段可以判断是否在合理范围内的数据长度,储存在内存中.比如,连续采样数据存 ...
- 分布式监控系统Zabbix-3.0.3-完整安装记录(7)-使用percona监控MySQL
前面已经介绍了分布式监控系统Zabbix-3.0.3-完整安装记录(2)-添加mysql监控,但是没有提供可以直接使用的Key,太过简陋,监控效果不佳.要想更加仔细的监控Mysql,业内同学们都会选择 ...
随机推荐
- 利用Gitee转接GitHub下载加速 简简单单 - 快快乐乐
利用Gitee转接GitHub下载加速 简简单单 - 快快乐乐 JERRY_Z. ~ 2020 / 10 / 26 转载请注明出处!️ 目录 利用Gitee转接GitHub下载加速 简简单单 - 快快 ...
- 线程池ScheduledThreadPool
定时线程池 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle ...
- Java网关服务-AIO(二)
Java网关服务-AIO(二) 概述 AIO的特点就是用户程序注册一个事件后就可以做其他事情,当事件被内核执行并得到结果后,我们的CompletionHandler会在I/O回调线程中被自动调用,有点 ...
- Centos7 使用nginx部署vue项目
一.安装nginx #设置源 sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0 ...
- Java Arrays 和 List的相互转化
最近在 leetcode 刷题的时候遇到过好几次这样的情况:需要返回的数据类型是数组(Arrays),但是求解的时候并不知道数组的长度,这时候就需要先用 List 进行临时存储,最后再转化为 Arra ...
- Github优质库分享-01算法小抄 基于LeetCode
Github 优质库分享-01 算法小抄 该库总共 60 多篇原创文章,都是基于 LeetCode 的题目,涵盖了所有题型和技巧,而且一定要做到举一反三,通俗易懂,绝不是简单的代码堆砌. 目前 sta ...
- Java的类加载器有几种?什么是双亲委派机制?
一.JAVA类加载器包括几种? 启动类加载器 bootstrap class loader 启动类加载器主要加载的是JVM自身需要的类,这个类加载是用C++语言实现的,是虚拟机自身的一部分,它负责将 ...
- html+canvas实现很真实的下雨雨落
原素材地址:http://www.htmlsucai.com/demo-9782.html <!DOCTYPE html> <html> <head> <me ...
- 三十二张图告诉你,Jenkins构建Spring Boot 有多简单~
持续原创输出,点击上方蓝字关注我 目录 前言 如何安装Jenkins? 环境准备 开始安装Jenkins 初始化配置 访问首页 输入管理员密码 安装插件 创建管理员 实例配置 配置完成 构建Sprin ...
- Layui弹出层详解
今天空了学习一下弹出层 还是一步步展示把 首先,layer可以独立使用,也可以通过Layui模块化使用.我个人一直是用的模块化的 所以下面素有的都是基于模块化的. 引入好相关文件就可以开始啦 今天放 ...