zabbix 分布式监控

===============================================================================

概述:

  具体内容如下:

  • zabbix proxy分布式监控的创建和使用;

  • zabbix 性能调优

      ·zabbix服务器进程数量调整:

      ·数据库优化

  • zabbix 优化建议;

  • 如何调整zabbix agent为主动监控模式

===============================================================================

zabbix proxy:

   ---可选组件,常用于分布式监控环境中,代理Server收集部分被监控数据并统一发往Server端;

安装配置过程:

(1)准备数据库服务器;

(2)安装

  • zabbix-proxy-mysql-3.0.2-1.el7.x86_64.rpm  zabbix-get-3.0.2-1.el7.x86_64.rpm  

(3)生成数据库

  • sql脚本位置:/usr/share/doc/zabbix-proxy-mysql-3.0.2/schema.sql.gz

  • mysql zabbix_proxy < /usr/share/doc/zabbix-proxy-mysql-3.0.2/schema.sql

(4)配置启动;

wKiom1gtOg3iKuwSAABfJi8wg-o511.png

(5)在server端添加此proxy;

  • 位置:Administration --> proxies

  • Active:Proxy主动向server发起配置信息同步请求;

  • Passive:由Server端向Proxy发送配置信息; 

(6)添加hosts时,选择使用指定的proxy进行监控;

注意:

  • 在server添加的Proxy的名称,要与proxy的配置文件中Hostname的值保持一致;

  • 通过proxy监控的主机,agent要授权proxy有监控权限;

        server=Proxy_Server_IP

演示:
 操作环境:

  • 新添加一台CentOS 7.2-4的虚拟主机配置zabbix-proxy,然后代理server端监控CentOS 7.2-3 主机;

-----------------------------------------------------------------------------------------

1.设置zabbix database,创建一个数据库,并授权一个用户有权限连接并使用zabbix-proxy的数据库


 1)mariadb安装,配置,及启动

# 在CentOS 7 安装mariadb数据库,使用前要首先编辑其配置文件/etc/my.cnf,添加跳过名称解析等
[root@centos7 ~]# vim /etc/my.cnf
skip_name_resolve = ON
innodb_file_per_table = ON

# 启动数据库,可以设置开机自启动
[root@centos7 ~]# systemctl start mariadb.service
[root@centos7 ~]# systemctl enabled mariadb.service

  2)创建zabbix database数据库,并授权一个用户可以远程和本地登录此数据库;

[root@centos7 ~]# mysql 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 5.5.44-MariaDB MariaDB Server

Copyright (c) 2000, 2015, 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_proxy charset 'utf8';
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> GRANT ALL ON zabbix_proxy.* TO 'zbxproxy'@'10.1.%.%' IDENTIFIED BY 'zbxpass';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL ON zabbix_proxy.* TO 'zbxproxy'@'127.0.0.1' IDENTIFIED BY 'zbxpass';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mydb               |
| mysql              |
| performance_schema |
| test               |
| zabbix_proxy       |
+--------------------+
6 rows in set (0.05 sec)


----------------------------------------------------------------------------------------

2.安装服务器端  

  1)下载zabbix相关的所有程序包

[root@centos7 ~]# ls zabbix-proxy
zabbix-get-3.0.2-1.el7.x86_64.rpm  zabbix-proxy-mysql-3.0.2-1.el7.x86_64.rpm

  2)安装server端的程序包:zabbix-server-mysql和zabbix-get

[root@centos7 zabbix-proxy]# yum install zabbix-proxy-mysql-3.0.2-1.el7.x86_64.rpm zabbix-get-3.0.2-1.el7.x86_64.rpm -y

[root@centos7 ~]# rpm -ql zabbix-proxy-mysql 
/etc/logrotate.d/zabbix-proxy         
/etc/zabbix/zabbix_proxy.conf                           //主配置文件
/usr/lib/systemd/system/zabbix-proxy.service            //Unit File文件
/usr/lib/tmpfiles.d/zabbix-proxy.conf
/usr/lib/zabbix/externalscripts
/usr/sbin/zabbix_proxy_mysql
/usr/share/doc/zabbix-proxy-mysql-3.0.2
/usr/share/doc/zabbix-proxy-mysql-3.0.2/AUTHORS
/usr/share/doc/zabbix-proxy-mysql-3.0.2/COPYING
/usr/share/doc/zabbix-proxy-mysql-3.0.2/ChangeLog
/usr/share/doc/zabbix-proxy-mysql-3.0.2/NEWS
/usr/share/doc/zabbix-proxy-mysql-3.0.2/README
/usr/share/doc/zabbix-proxy-mysql-3.0.2/schema.sql.gz    //sql脚本,导入数据库使用
/usr/share/man/man8/zabbix_proxy.8.gz
/var/log/zabbix
/var/run/zabbix

----------------------------------------------------------------------------------------

3.导入数据库脚本,以生成数据库环境

[root@centos7 ~]# cp /usr/share/doc/zabbix-proxy-mysql-3.0.2/schema.sql.gz zabbix-proxy/  
[root@centos7 ~]# gzip -d zabbix-proxy/schema.sql.gz       //复制脚本到本地,并解压缩                       
[root@centos7 ~]# cd zabbix-proxy
[root@centos7 zabbix-proxy]# ls
schema.sql  

# 导入数据库脚本
[root@centos7 zabbix-proxy]# mysql -uzbxproxy -h127.0.0.1 -pzbxpass zabbix_proxy < schema.sql 

[root@centos7 zabbix-proxy]# mysql -uzbxproxy -h127.0.0.1 -pzbxpass  
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 11
Server version: 5.5.44-MariaDB MariaDB Server

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
| zabbix_proxy       |
+--------------------+
3 rows in set (0.00 sec)

MariaDB [(none)]> use zabbix_proxy
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [zabbix_proxy]> show tables;  //查看导入脚本后生成的表
+----------------------------+
| Tables_in_zabbix_proxy     |
+----------------------------+
| acknowledges               |
| actions                    |
| alerts                     |
| application_discovery      |
| application_prototype      |
| application_template       |
| applications               |
| auditlog                   |
| auditlog_details           |
| autoreg_host               |
| conditions                 |
| config                     |

----------------------------------------------------------------------------------------

4.zabbix-proxy配置启动

   1)配置说明

[root@centos7 ~]# grep "^####" /etc/zabbix/zabbix_proxy.conf   //获取配置段大概信息
############ GENERAL PARAMETERS #################
######### PROXY SPECIFIC PARAMETERS #############
############ ADVANCED PARAMETERS ################
####### LOADABLE MODULES #######
####### TLS-RELATED PARAMETERS #######

  2)编辑配置如下:

[root@centos7 ~]# vim /etc/zabbix/zabbix_proxy.conf 
  Server=10.1.252.153            //zabbix-server端的地址      
  Hostname=zbxproxy.CentOS7.2-4
  DBHost=10.1.252.73
  DBName=zabbix_proxy 
  DBUser=zbxproxy
  DBPassword=zbxpass
  
  ConfigFrequency=120         //zabbix-server端多长时间将proxy配置推送给proxy端
  DataSenderFrequency=1       //proxy端每多长时间把数据发送给zabbix-server端

 3)启动zabbix-proxy服务,查看端口10051

[root@centos7 ~]# systemctl start zabbix-proxy

[root@centos7 ~]# ss -tnl
State      Recv-Q Send-Q   Local Address:Port                  Peer Address:Port              
LISTEN     0      50                   *:3306                             *:*     //数据库     
LISTEN     0      128                  *:22                               *:*                  
LISTEN     0      128          127.0.0.1:631                              *:*                  
LISTEN     0      100          127.0.0.1:25                               *:*                  
LISTEN     0      128          127.0.0.1:6010                             *:*                  
LISTEN     0      128                  *:10051                            *:*     //proxy         
LISTEN     0      128                 :::22                              :::*                  
LISTEN     0      128                ::1:631                             :::*                  
LISTEN     0      100                ::1:25                              :::*                  
LISTEN     0      128                ::1:6010                            :::*                  
LISTEN     0      128                 :::10051                           :::*

---------------------------------------------------------------------------------------

5.在server端添加此proxy 

 1)点击管理菜单--->agent代理程序--->创建代理

wKiom1gtIH7wgqH2AABGAVkgWAI628.png 

 2)设定代理程序proxy的名称(和配置文件中保持一致),和代理模式,然后添加即可,如下:

wKioL1gtR9zSG2kOAABd6oT4Kt4371.png

wKioL1gtOQ-yTnrVAABPNjVkk1Q164.png


----------------------------------------------------------------------------------------------------------------------------------------

6.添加CentOS 7.2-3 的hosts主机时,选择使用指定的proxy进行监控;

 1)修改配置文件,重启zabbix-agent服务;

[root@centos7 zabbix]# vim zabbix_agentd.conf
##### Passive checks related        //被动监控相关配置
Server=10.1.252.153,10.1.252.73    //特别注意:要添加允许proxy端采取数据的ip
ListenPort=10050              
ListenIP=0.0.0.0               
StartAgents=3                  

##### Active checks related    //主动监控相关的配置
ServerActive=10.1.252.73        //主动报告数据的服务器也为proxy端
Hostname=CentOS 7.2-3

 2)在web端添加CentOS 7.2-3的hosts主机,并指明是通过代理proxy监控的,如下:

wKiom1gtMF_TQJQyAACUm030i6w278.png

wKiom1gtIijhstGKAAAxxFvD1hw487.png


 2)在CentOS 7.2-3上添加所需要的模板,如下:

wKiom1gtI5mDd-QKAABJQigocIg891.png

 3)点击添加之后可以看到自己添加的主机是通过zabbix-proxy代理监控的,如下:

wKiom1gtMnXDrquLAADYcT0iuNQ448.png

 4)在监测中查看数据及图形如下:

wKiom1gtOVSSZZWdAACw0qRIgso099.png


 如上,就是整个zabbix-proxy分布式监控的整个配置过程...

=============================================================================

zabbix performance tuning:性能调优

衡量指标

  • NVPS:New Value Per Second(每秒新值)

zabbix服务器进程数量调整:

  • alerter(报警器进程)

  • discoverer(发现进程)

  • escalator(报警升级进程)

  • http poller

  • housekeeper

  • poller(被动监控的进程数)

  • trapper(主动监控进程数)

  • configration syncer(同步配置时长)

  • ipmi poller

    ...

建议要调整的有:

  • StartPollers=50

  • StartPingers=10    //探测主机是否在线

  • StartDBSyncers=2   //启动与proxy同等数量的数据同步进程

    ...

数据库优化:

分表

  • history_*

  • trend*

  • events*

建议:

Database:

  • 历史数据不要保存太长时间;尽量让数据缓存数据库服务器内存中;

触发器的表达式:

  • 减少使用min(), max(), avg();尽量使用last(), nodata();

数据收集:

  • polling较慢时,减少使用snmp/agentless/agent,即被动监控,尽量使用trapping方式,即agent(active)主动监控;

数据类型:

  • 文本型数据处理速度较慢,尽量少收集类型为text或string或log型的数据,多使用numeric型数据;

zabbix agent Active主动模式监控

zabbix_server端当主机数量过多的时候,由Server端去收集数据,Zabbix会出现严重的性能问题,

主要表现如下:

  • 当被监控端到达一个量级的时候,Web操作很卡,容易出现502

  • 图层断裂

  • 开启的进程(Pollar)太多,即使减少item数量,以后加入一定量的机器也会有问题

所以要考虑在两个方面优化:

  • 添加Proxy节点或者Node模式做分布式监控

  • 调整Agentd为主动模式

由于第一个方案需要增加物理机器,所以首先尝试第二方案。

调整Agent为主动模式:

1.被监控端 zabbix_Agentd.conf 的配置调整:

LogFile=/tmp/zabbix_agentd.log
StartAgents=0             //客户端agent(被动)模式,其值为0的时候,仅为主动模式,被监控端的zabbix_agentd 
                            不监听本地端口,所以无法在 netstat -tunpl 中查看到zabbix_agentd的端口和进程
ServerActive=**.**.**.**  //zabbix_server的ip
Hostname=test_host        //重要:主机名
RefreshActiveChecks=1800  //被监控端到服务器获取监控项的周期
BufferSize=200            //被监控端存储监控信息的空间大小
Timeout=10                //超时时间

比较重要的参数是ServerActive和Hostname,ServerActive是指定Agentd收集的数据往哪里发送,Hostname是必须要和Server端添加主机时的主机名一样,这样Server端接收到数据才能找到对应关系。

2.Server端的zabbix_server.conf 配置调整:

StartPollers=100   //在高级设置中,首先把这个主动收集数据(被动模式)进程减少,原来开到700多,囧

StartTrappers=200  //然后把这个负责处理Agentd推送(主动模式)过来的数据的进程开大一些,就可以了

3.然后修改模板,调整对应的监控项类型为agent_Actice模式即可

wKioL1gtXtXij1foAACh1ONYsvk456.png

 

  4.添加主机时一定要注意,主机名和配置文件设定的一定要相同

wKioL1gtX4XS48EUAABkz0C47Gg315.png