配置MySQL实现Zabbix代理服务器的性能调优
来源:互联网 发布:java程序员 常用软件 编辑:程序博客网 时间:2024/06/06 05:22
Zabbix是一款优秀的开源监控软件,但是在单点模式下,监控点多了就有点力不从心了。好在Zabbix提供了分布式监控架构,采用主服务器+代理服务器的方式,很好的解决了这个问题。通过下面代理服务器的横向扩展,理论上可以监控无限多节点。Zabbix代理代Zabbix主服务器收集监控信息,并暂存在代理服务器上,然后每隔一段时间(一般设置为30秒)将这些监控信息批量提交给主服务器,这样就降低了主服务器的IO频率,提高了监控信息收集的效率。
在编译安装Zabbix代理的时候,主要提供了两种数据库选择。一种是简单的,使用SQLite文件数据库,这种方式不需要建库,只需要安装有SQLite包,并在zabbix_proxy.conf里面指定SQLite文件的路径即可,zabbix_proxy(zabbix代理)在启动的时候会自动创建SQLite文件,并在其中建立表结构,将从节点收集的信息暂存在里面。另一种方式相对复杂,使用MySQL数据库作为暂存库,要先建立一个MySQL数据库,再创建zabbix的表结构,再修改zabbix_proxy.conf指定MySQL的连接端口,用户名/口令和数据库名。
在我的监控环境里,我最开始使用的是SQLite数据库,这也是默认的最简单的处理方法,我一共配置了4台zabbix_proxy,总共监控了3000多个节点,26万个监控指标项。但实际使用下来,发现使用SQLite数据库的zabbix_proxy,主服务器端获取监控指标项的排队非常严重,指标值更新超时10分钟以上的指标项有14万之多,这显然不能满足监控实时性的要求。于是登陆到zabbix_proxy主机,发现四个proxy上的SQLite数据库文件都已经达到1GB以上,估计文件过大导致SQLite数据库存取缓慢,于是决定用MySQL做zabbix_proxy的中间库,放弃SQLite。
1.安装MySQL数据库软件:
yum -y install mysqld
2.修改/etc/my.cnf配置文件:
open_files_limit = 10240 back_log = 600 max_connections=6000 #准备好让zabbix_proxy起很多个连接 table_cache = 10000 thread_concurrency = 32 query_cache_size = 64M query_cache_limit = 4M bulk_insert_buffer_size = 128M #优化插入性能 innodb_additional_mem_pool_size = 16M innodb_buffer_pool_size = 2048M #加大buffer pool innodb_file_io_threads = 4 innodb_thread_concurrency = 16 innodb_flush_log_at_trx_commit = 2 innodb_log_buffer_size = 16M innodb_log_file_size = 128M innodb_log_files_in_group = 3 innodb_max_dirty_pages_pct = 90 innodb_lock_wait_timeout = 120 innodb_file_per_table = 1
2.启动MySQL并建立空白数据库zabbix:
service mysqld startmysql -urootcreate database zabbix character set utf8;grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';#导入zabbix数据库空表:mysql -uroot zabbix < /root/zabbix-2.4.2/database/mysql/schema.sql
3.重新编译zabbix源码,生成连接MySQL的zabbix_proxy:
#reconfigure and install zabbix_proxy with mysql:cd /root/zabbix-2.4.2service zabbix_proxy stop./configure --prefix=/zabbix --sysconfdir=/zabbix/conf --enable-proxy --with-net-snmp --with-mysql --with-ssh2 --with-libcurl --with-libxml2make cleanmake install
4.修改zabbix_proxy.conf配置文件:
Server=192.168.0.1 #主服务器zabbix_server的地址 LogFile=/zabbix/log/zabbix_proxy.log #zabbix_proxy的日志文件路径DBName=zabbix #MySQL数据库名DBUser=zabbix #MySQL数据库用户DBPassword=zabbix #MySQL数据库密码DBSocket=/oracle/mysql/mysql.sock #MySQL数据库连接文件DBPort=3306 #MySQL数据库服务端口ProxyLocalBuffer=2 #zabbix_proxy在本地保留历史数据的时间,这里设置为2小时ProxyOfflineBuffer=12 #与主服务器失联后,zabbix_proxy在本地保留历史数据的时间,这里设置为12小时StartPollers=1000 #起1000个抓取进程StartTrappers=1000 #起1000个接收进程CacheSize=4G #加大存放hosts和items数据的缓存HistoryCacheSize=512M #加大存放历史数据的缓存
5.保存并启动zabbix_proxy:
service zabbix_proxy startchkconfig mysqld onchkconfig zabbix_agentd onchkconfig zabbix_proxy on
可以看到,采用新的方案后,数据采集的效率得到了很大提高:
- 配置MySQL实现Zabbix代理服务器的性能调优
- zabbix性能调优
- zabbix 配置mysql监控
- Zabbix配置mysql监控
- centos7环境配置haproxy实现mysql数据库和redis代理服务器
- Zabbix监控Mysql数据库性能
- Zabbix监控Mysql数据库性能
- Zabbix监控Mysql数据库性能
- socks5代理服务器的配置
- 代理服务器Squid3的配置
- 配置Ubuntu的代理服务器
- nginx代理服务器的配置
- Zabbix agentd 配置MySQL监控
- NGINX 实现内部网络的HTTP代理服务器的配置
- 使用libdrizzle实现mysql代理服务器的问题及优化
- Zabbix Agent的配置
- 简单的zabbix配置
- HTTP代理服务器的实现
- 113 经验 关于提升开发效率
- 【问鼎杯】3-2关卡writeup
- 6. 在DIRECT3D中绘图
- [LeetCode202]Happy Number
- Kriging插值
- 配置MySQL实现Zabbix代理服务器的性能调优
- <Android>在android开发中实现一行文字流动
- SQL Tuning Advisor使用实例
- HDU 4366(Successor-块状链表)
- php empty() isset() is_null()
- OpenAM不能使用IP地址访问
- 用类插件化开发思想重构KafkaConsumer
- 吐槽Scrum,说说Agile
- FastDFS安装指南