配置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

       可以看到,采用新的方案后,数据采集的效率得到了很大提高:








0 0
原创粉丝点击