luobo2ni 发表于 2019-1-25 08:24:47

zabbix 使用进阶(六)

zabbix 分布式监控
  ===============================================================================
  概述:
  具体内容如下:

[*]  zabbix proxy分布式监控的创建和使用;
[*]  zabbix 性能调优
  ·zabbix服务器进程数量调整:
  ·数据库优化
[*]  zabbix 优化建议;
[*]  如何调整zabbix agent为主动监控模式
  ===============================================================================
  
zabbix proxy:
---可选组件,常用于分布式监控环境中,代理Server收集部分被监控数据并统一发往Server端;

★安装配置过程:
(1)准备数据库服务器;
(2)安装

[*]zabbix-proxy-mysql-3.0.2-1.el7.x86_64.rpmzabbix-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)配置启动;

http://s4.运维网.com/wyfs02/M01/8A/51/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,添加跳过名称解析等
# vim /etc/my.cnf
skip_name_resolve = ON
innodb_file_per_table = ON
# 启动数据库,可以设置开机自启动
# systemctl start mariadb.service
# systemctl enabled mariadb.service  2)创建zabbix database数据库,并授权一个用户可以远程和本地登录此数据库;
# 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相关的所有程序包
# ls zabbix-proxy
zabbix-get-3.0.2-1.el7.x86_64.rpmzabbix-proxy-mysql-3.0.2-1.el7.x86_64.rpm  2)安装server端的程序包:zabbix-server-mysql和zabbix-get
# yum install zabbix-proxy-mysql-3.0.2-1.el7.x86_64.rpm zabbix-get-3.0.2-1.el7.x86_64.rpm -y
# 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.导入数据库脚本,以生成数据库环境
# cp /usr/share/doc/zabbix-proxy-mysql-3.0.2/schema.sql.gz zabbix-proxy/
# gzip -d zabbix-proxy/schema.sql.gz       //复制脚本到本地,并解压缩                     
# cd zabbix-proxy
# ls
schema.sql
# 导入数据库脚本
# mysql -uzbxproxy -h127.0.0.1 -pzbxpass zabbix_proxy < schema.sql
# 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 > 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)配置说明
# grep "^####" /etc/zabbix/zabbix_proxy.conf   //获取配置段大概信息
############ GENERAL PARAMETERS #################
######### PROXY SPECIFIC PARAMETERS #############
############ ADVANCED PARAMETERS ################
####### LOADABLE MODULES #######
####### TLS-RELATED PARAMETERS #######   2)编辑配置如下:
# 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
# systemctl start zabbix-proxy
# 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代理程序--->创建代理
  http://s4.运维网.com/wyfs02/M02/8A/50/wKiom1gtIH7wgqH2AABGAVkgWAI628.png
   2)设定代理程序proxy的名称(和配置文件中保持一致),和代理模式,然后添加即可,如下:
http://s5.运维网.com/wyfs02/M01/8A/4F/wKioL1gtR9zSG2kOAABd6oT4Kt4371.png
http://s3.运维网.com/wyfs02/M00/8A/4E/wKioL1gtOQ-yTnrVAABPNjVkk1Q164.png
  

  ----------------------------------------------------------------------------------------------------------------------------------------
  6.添加CentOS 7.2-3 的hosts主机时,选择使用指定的proxy进行监控;
   1)修改配置文件,重启zabbix-agent服务;
  
# 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监控的,如下:
http://s1.运维网.com/wyfs02/M01/8A/51/wKiom1gtMF_TQJQyAACUm030i6w278.png
http://s2.运维网.com/wyfs02/M00/8A/50/wKiom1gtIijhstGKAAAxxFvD1hw487.png
  

   2)在CentOS 7.2-3上添加所需要的模板,如下:
  http://s4.运维网.com/wyfs02/M02/8A/50/wKiom1gtI5mDd-QKAABJQigocIg891.png
   3)点击添加之后可以看到自己添加的主机是通过zabbix-proxy代理监控的,如下:
http://s4.运维网.com/wyfs02/M00/8A/51/wKiom1gtMnXDrquLAADYcT0iuNQ448.png
   4)在监测中查看数据及图形如下:
http://s4.运维网.com/wyfs02/M00/8A/51/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模式即可
http://s3.运维网.com/wyfs02/M01/8A/50/wKioL1gtXtXij1foAACh1ONYsvk456.png
  
  4.添加主机时一定要注意,主机名和配置文件设定的一定要相同
http://s4.运维网.com/wyfs02/M01/8A/50/wKioL1gtX4XS48EUAABkz0C47Gg315.png
  

  

  

  

  

  

  

  

  

  




页: [1]
查看完整版本: zabbix 使用进阶(六)