1、概述
zabbix是一个基于WEB界面的分布式的监控系统,是开源的企业级监控解决方案,支持通过代理服务器(zabbix proxy)收集zabbix agent的数据,然后在把数据同步到zabbix server端存储和展示。
2、特点
安装配置简单
支持多语言
开源免费
自动发现服务器与网络设备
分布式监控及web集中管理
可有无Agent监控
用户安全认证和授权
邮件告警及脚本支持
3、架构图:
4、描述:
zabbix的分布式系统主要解决zabbix-server在监控设备分区或主机设备过多时分散zabbix-server的压力,可以在不同IDC部署zabbix-proxy代理监控本IDC的所有设备在通过主动模式把收集的数据同步到zabbix-server端。
环境:
os:centos 6.x
zabbix-Server:3.0.1
zabbix-Proxy:3.0.19
zabbix-Agent:3.0.19
httpd:2.2.5
PHP:5.6
MySQL:5.6.30
172.16.1.1 Server
172.16.1.2 Proxy
172.16.1.3 Agent
注意:
5、zabbix-server配置说明:
NodeID=0 #分布式节点ID号,0代表是独立服务器,默认被注释掉,不强制配置
ListenPort=10051 #zabbix-server的端口,默认是10051,范围是1024-32767,推荐默认
SourceIP= #连接的源IP地址,默认为空
LogFile=/tmp/zabbix_server.log #日志文件的存放位置
LogFileSize=1 #说明:日志达到多少M里就轮转;若此参数值为0时,则不轮转,日志将不断变大,建议设置成轮转。
DebugLevel=3 #指定调试级别
PidFile=/tmp/zabbix_server.pid #pid文件的存放位置
DBHost=localhost #数据库主机名,默认localhost
DBName=zabbix #数据库的名字
DBUser=zabbix #接数据库的用户名
DBPassword=123456 #数据库的密码
DBSocket=/var/lib/mysql/mysql.sock #用户连接数据库所用的sock位置
DBPort=3306 #数据库的端口号
StartPollers=5 #初始化时启动子进程数量,数量越多,则服务端吞吐能力越强,对系统资源消耗越大。
StartIPMIPollers=0 #主要用于IPmi技术用于获取硬件状态场景。若无相关监控项,建议设置为0
StartTrappers=5 #用于设置诸如SNMP STRAPPER场景提交来的数据的接收进程数,若客户机SNMP TRAPPER技术较多,建议加大此参数值
StartPingers=1 #用于设置启用icmp协议PING主机方式启动线程数量,若单台代理所管理机器超过500台,建议加大此数值
StartDiscoverers=1 #用于设置自动发现主机的线程数量,若单台代理所管理机器超过500台,可以考虑加大此数值(仅适用于直接AGENT场景)
StartHTTPPollers=1 #说明:用于设置WEB拨测监控线程数,可视具体情况增加或减少此数值。
JavaGateway=127.0.0.1 #JavaGateway的ip地址或主机名
JavaGatewayPort=10052 #JavaGateway的端口号
StartJavaPollers=5 #开启连接javagatey的进程数
SNMPTrapperFile=/tmp/zabbix_traps.tmp
StartSNMPTrapper=0 #如果设置为1,snmp trapper进程就会开启
ListenIP=0.0.0.0 #监听来自trapper的ip地址
HousekeepingFrequency=1 #多少小时清理一次代理端数据库的history, alert, and alarms,以保持代理端数据库轻便,建议保持默认
MaxHousekeeperDelete=500 #每次轮询housekeeper这个任务的时候,超过这个阀值的行都会被清理。
SenderFrequency=30 #多少秒后重试发送失败的报警信息
CacheSize=8M #zabbix初始化时占用多少系统共享内存用于存储配置信息,HOST,ITEM,TRIGGER数据,视监控主机数量和监控项调整,建议调整到32M或者更大
CacheUpdateFrequency=60 #说明:zabbix更新操作系统CACHE配置,若管理页面操作不频繁,可以考虑加大参数值
StartDBSyncers=4 #将采集数据从CACHE同步到数据库线程数量,视数据库服务器I/O繁忙情况,和数据库写能力调整。数值越大,写能力越强。对数据库服务器I/O压力越大。
HistoryCacheSize=8M #说明:用于设置划分多少系统共享内存用于存储采集的历史数据,此数值越大,数据库读压力越小
TrendCacheSize=4M #说明:用于设置划分多少系统共享内存用于存储计算出来的趋势数据,此参数值从一定程度上可影响数据库读压力
HistoryTextCacheSize=16M #说明:指定划出多少系统共享内存用于存储 character, text or log history数据,若二级代理内存足够,建议可适当扩大此数值,可很大程度上解决系统I/O压力,和数据库读压力
ValueCacheSize=8M #说明:划出系统多少共享内存用于已请求的存储监控项信息,若监控项较多,建议加大此数值
NodeNoEvents=0 #说明:若节点为子结点,是否允许本地事件(events表)发送到主节点,1为不发送,但不影响此节点以下的节点的传播能力,视ZABBIX分布式系统架构设计开启或关闭。在不明架构前提下,建议保持默认
NodeNoHistory=0 #说明:若节点为子结点,是否允许本地历史数据发送到主节点,1为不发送,但不影响此节点以下的节点的传播能力,视ZABBIX分布式系统架构设计开启或关闭,在不明架构前提下,建议保持默认
Timeout=3 #说明:与AGNET\SNMP设备和其它外部设备通信超时设置,单位为秒;若采集数据不完整或网络繁忙,或从管理页面发现客户端状态变化频繁,可以考虑加大此数值。注意若此数值加大,应该考虑参数 StartPollers 是否有相应加大的必要。
TrapperTimeout=300 #说明:启用 trapper功能,用于进程等待超时设置。根据需要调整
UnreachablePeriod=45 #说明:当AGNET端处于不可用状态下,间隔多少秒后,尝试重新连接。建议根据具体情况设置。注意,若此数值过小,右agent端业务系统繁忙时,有可能造成报警信息误报
UnavailableDelay=60 #说明:当AGENT端处于可用状态下,间隔多少秒后,进行状态检查。若出现可正常采集数据,但管理页面AGENT状态不正常;若在网络,端口等均通畅情况下,AGENT状态仍不正常,可以考虑加大此数值
UnreachableDelay=15 #说明:当agent端处于不可达状态下,延迟多少秒后,进行重新尝试,建议保持默认,在AGENT接入调试阶段,可考虑减少此数值
AlertScriptsPath=/usr/local/zabbix/shell #监控报警脚本的存放路径
FpingLocation=/usr/local/sbin/fping #说明:IPv4 FPING命令路径,仅ROOT可用。注意使用此命令时,应该确认此命令是否存在
SSHKeyLocation= #说明:在服务端需要SSH到AGENT端且采用用KEY验证方式时使用。
LogSlowQueries=0 #说明:用于服务端数据库慢查询功能,单位是毫秒;1毫秒=0.001秒,若有服务端数据库监控慢查询的需求,可以视具体情况调整此数。
TmpDir=/tmp
Include=/usr/local/etc/zabbix_server.general.conf
Include=/usr/local/etc/zabbix_server.conf.d/ #子配置文件路径
StartProxyPollers=1 #在zabbix proxy被动模式下用此参数
ProxyConfigFrequency=3600#同上
6、zabbix-proxy配置说明:
PidFile=/tmp/zabbix_agentd.pid #pid文件的存放位置
LogFile=/tmp/zabbix_agentd.log #日志文件的位置
LogFileSize=1 #当日志文件达到多大时进行轮询操作
DebugLevel=3 #日志信息级别
SourceIP= #连接的源ip地址,默认为空,即可
EnableRemoteCommands=0 #是否允许zabbix server端的远程指令,
0表示不允许,
1表示允许
LogRemoteCommands=0 #是否开启日志记录shell命令作为警告 0表示不允许,1表示允许
Server=127.0.0.1 #zabbix server的ip地址或主机名,可同时列出多个,需要用逗号隔开
ListenPort=10050 #zabbix agent监听的端口
ListenIP=0.0.0.0 #zabbix agent监听的ip地址
StartAgents=3 #zabbix agent开启进程数
ServerActive=127.0.0.1 #开启主动检查
Hostname=Zabbix server#在zabbix server前端配置时指定的主机名要相同,最重要的配置
RefreshActiveChecks=120 #主动检查刷新的时间,单位为秒数
BufferSend=5 #数据缓冲的时间
BufferSize=100 #zabbix agent数据缓冲区的大小,当达到该值便会发送所有的数据到zabbix server
MaxLinesPerSecond=100 #zabbix agent发送给zabbix server最大的数据行
AllowRoot=0 #是否允许zabbix agent 以root用户运行
Timeout=3 #设定处理超时的时间
Include=/usr/local/etc/zabbix_agentd.userparams.conf
Include=/usr/local/etc/zabbix_agentd.conf.d/ #包含子配置文件的路径
UnsafeUserParameters=0 #是否允许所有字符参数的传递
UserParameter= #指定用户自定义参数
7、zabbix-agent配置说明:
Server=127.0.0.1 #指定zabbix server的ip地址或主机名
Hostname=zabbix-proxy-1.35 #定义监控代理的主机名,需和zabbix server前端配置时指定的节点名相同
LogFile=/tmp/zabbix_proxy.log #指定日志文件的位置
PidFile=/tmp/zabbix_proxy.pid #pid文件的位置
DBName=zabbix_proxy #数据库名
DBUser=zabbix #连接数据库的用户
DBPassword=123456#连接数据库用户的密码
ConfigFrequency=60 #zabbix proxy从zabbix server取得配置数据的频率
DataSenderFrequency=60 #zabbix proxy发送监控到的数据给zabbix server的频率
官网地址:
https://www.zabbix.com/documentation/3.0/manual/appendix/config/zabbix_proxy
https://www.zabbix.com/documentation/3.0/manual/appendix/config/zabbix_server
https://www.zabbix.com/documentation/3.0/manual/appendix/config/zabbix_agentd
8、安装yum源:
rpm -i https://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/zabbix-release-3.0-1.el6.noarch.rpm
9、安装配置zabbix-server:
yum install -y zabbix-server mysql-server php httpd mysql-devel php-bcmath php-mbstring php-gd \
php-xmlwriter php-xmlreader
/etc/init.d/mysqld restart
cd /usr/share/doc/zabbix-server-mysql-3.0.19/
gzip -d create.sql.gz
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 506
Server version: 5.6.30 MySQL Community Server (GPL) by Remi
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> create database zabbix;
mysql> grant all on zabbix.* to 'zabbix'@'localhost' identified by 'zabbix' with grant option;
mysql> flush privileges;
mysql> use zabbix;
mysql> source create.sql
mysql> quit;
10、zabbix-server配置:
LogFile=/app/zabbix/logs/zabbix_server.log
PidFile=/app/zabbix/pid/zabbix_server.pid
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
ListenIP=localhost
CacheSize=1024M #根据服务器性能修改,太小后面会报out of memory
AlertScriptsPath=/app/zabbix/alertscripts #zabbix运行脚本存放目录
11、LNMP环境配置:
vim /etc/php.ini
date.timezone = Asia/Shanghai
vim /etc/httpd/conf/httpd.conf
ServerName www.example.com:80
cd /usr/share/doc/zabbix-web-3.0.19/
cp httpd22-example.conf /etc/httpd/conf.d/zabbix.conf
/etc/init.d/httpd restart
12、WEB安装:
打开浏览器输入:http://172.16.1.2
下一步
下一步
下一步
下一步
完成
默认用户:Admin 密码:zabbix
12、安装zabbix-proxy(需要一个独立的数据库):
yum install -y zabbix-proxy mysql-server
13、安装好数据库root密码留空,导入zabbix-proxy需要的表结构:
[root@zabbix-proxy-bj ~]# cd /usr/share/doc/zabbix-proxy-mysql-3.0.19/
[root@zabbix-proxy-bj ~]# gzip -d schema.sql.gz
[root@zabbix-proxy-bj ~]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1173
Server version: 5.6.30 Source distribution
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> create database proxy character set utf8 collate utf8_bin;
mysql> source schema.sql;
mysql> grant all privileges on proxy.* to 'proxy'@'%' identified by '123456';
mysql> quit;
14、配置zabbix-proxy服务:
Server=172.16.1.1 # zabbix-server地址
Hostname=zbx.proxy # zabbix-proxy主机名,必须和zabbix-server-web上添加时的名称一至
DBHost=localhost
DBName=proxy
DBUser=proxy
DBPassword=123456
DBPort=3306
15、配置zabbix-agentd服务:
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=127.0.0.1
ServerActive=127.0.0.1
Hostname=zbx.agent
16、启动zabbix-proxy和zabbix-agentd服务:
/etc/init.d/zabbix-agent restart
/etc/init.d/zabbix-server restart
17、zabbix-server-web上添加代理:
18、测试zabbix-agentd安装:
rpm -i https://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/zabbix-release-3.0-1.el6.noarch.rpm
yum install zabbix-agent -y
19、zabbix-agentd配置:
PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
Server=172.16.1.2
ServerActive=172.16.1.2
Hostname=zbx.proxy.01 #必须和zabbix-server-web添加主机的名称一致
20、zabbix-server-web添加主机监控:
21、总结:
添加后查看主机状态,正常后就可以获取到监控数据了,如果异常请查看zabbix-agent和zabbix-proxy的日志定位问题。需要注意的是zabbix-proxy需要单独的数据库来临时存储zabbix-agent的监控数据,目的是为了减轻zabbix-server的服务器压力。