zabbix
监控系统理想型
监控数据收集及可视化
- 监控系统能够自定义监控的内容,可以自己写脚本来收集需要的数据
- 数据要保存在数据库中,这样以后需要的时候可以对这些数据进行分析计算
- 能够方便、快速地将监控加人到服务器上,不需要烦琐的操作
- 数据可视化不要很花哨,但要直观好用
异常数据报警
- 可以定义复杂的报警逻辑,可以做到 Item之间的关联报警,而不是只能针对一个
- 报警需要被确认,让运维人员知道多少报警已经有人认领并开始处理了
- 报警方式要能够自定义,可以发邮件和短信,如果能够在 IM(即时通信)上通知别人就更好了
- 报警内容要可以自行设置,在报警邮件中加入一些简单的分析
- 报警后可以自动跑一些命令。这些命令可以是获取需要的信息,也可以是自动修复(重启)
和其他的系统协同工作
- 有强大的API可以使用,可以让其他系统调用完成工作
- 监控数据是开放的,数据库中的数据结构不要太复杂,让人无从下手
- 监控可视化的图可以方便地引用,而不是要用一大串JavaScript
zabbix介绍
中文社区
- http://www.zabbix.org.cn/
官方文档
- https://www.zabbix.com/documentation/5.0/zh/manual
简介
- 是一个非常强大的监控系统
- 对于想快速可用的小型公司,Zabbix 自带的Item足够满足需求,通过简单的配置,可以在很短的时间内搭建起一套功能完善的报警系统
- 对于中大型公司,Zabbix 也能很好地支撑,可以设定自定义的 ltem,自动生成报表,有API和其他系统集成,数据库中有开放的数据可供分析
选择Zabbix的理由
-
监控数据收集及可视化
- 支持任何自定义的监控脚本,只要输出需要的值就可以
- 在数据库中的表结构虽然有些复杂,但逻辑很清晰
- 有模板这一概念,可以方便地将一组 Item 进行统一操作
- 每一个 Item 都可以看到其历史,Web 界面可拖动,界面友好
-
异常数据报警
- 强大的Trigger定义,几乎可以满足所有规则组合
- 对于报警,有 ACK 机制
- 支持邮件、Jabber
- 自定义了一套宏可以在报警邮件中引用
- 在触发报警后,Zabbix可以远程执行命令。可以是获取信息,也可以是自动修复
-
和其他的系统协同工作
- 支持RestAPI,几乎所有的操作都可以通过API实现
- 监控数据就在Zabbix数据库中,可以方便地进行分析
- 使用PHP原生的绘图模块,引用Zabbix的图表只需要引用图表的URL即可,非常方便
端口
-
server
- 10051
-
agent
- 10050
监控原理
zabbix组件
-
Zabbix Server
- 负责接收agent发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行
-
Database Storage
- 专用于存储所有配置信息,以及由zabbix收集的数据
-
Web interface
- zabbix的GUI接口,通常与Server运行在同一台主机上
-
Proxy
- 可选组件,常用于监控节点很多的分布式环境中,代理server收集数据转发到server,可以减轻server的压力
-
Agent
- 部署在被监控主机上,负责收集本地数据并发往Server端或Proxy端
监控流程
-
agentd需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图。agentd收集数据分为主动和被动两种模式
-
主动监测
-
agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy
-
过程
-
获取ACTIVE ITEMS列表
- • Agent打开TCP连接
- • Agent请求items检测列表
- • Server返回items列表
- • Agent 处理响应
- • 关闭TCP连接
- • Agent开始收集数据
-
提交数据
- • Agent建立TCP连接
- • Agent提交items列表收集的数据
- • Server处理数据,并返回响应状态
- • 关闭TCP连接
-
-
-
被动监测
-
server向agent请求获取监控项的数据,agent返回数据
-
过程
- • Server打开一个TCP连接
- • Server发送请求agent.ping\n
- • Agent接收到请求并且响应
- • Server处理接收到的数据1
- • 关闭TCP连接
-
部署5.0
server
1.1.1.11
-
配置zabbix源
- rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
- vim /etc/yum.repos.d/zabbix.repo打开zabbix-frontend源
-
安装zabbix
- yum -y install zabbix-server-mysql zabbix-agent centos-release-scl
- yum -y install zabbix-web-mysql-scl zabbix-apache-conf-scl
- yum -y install zabbix-get mariadb-server
-
启动数据库
- systemctl start mariadb;systemctl enable mariadb
-
建库授权
- mysql
-
create database zabbix character set utf8 collate utf8_bin;
-
grant all privileges on zabbix.* to zabbix@localhost identified by ‘zabbix’;
-
导入zabbix表
- zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz |mysql -uzabbix -pzabbix -D zabbix
-
修改主配置文件
DBPassword=zabbix
php_value[date.timezone] = Asia/Shanghai
-
启动服务
- systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
- systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
- netstat -tlnp |grep “zabbix”
-
安装应用
- 使用浏览器访问: http://1.1.1.11/zabbix,按步骤点击安装
- 登录用户名:Admin,登录密码:zabbix
-
设置语言
- User settings->Language->Chinese->Update
-
重置密码
-
修改users表,将对应用户的passwd列内容改为下列密文
-
$2y 10 10 10EJ64ugc3YEnGH2jaM06XCO68igbTx4LpkcfVPnzoJHRy8Wm8h0Hti
- 123456
-
agent
1.1.1.12
-
安装agent
- yum install -y zabbix-agent
-
修改agent配置文件
Server=1.1.1.11
ServerActive=1.1.1.11
Hostname=agent #最好与本机主机名一致
-
键
- zabbix内置有很多"方法"去获取agent上的数据, 这些"方法"的名称我们称之为"键"
- https://www.zabbix.com/documentation/5.0/zh/manual/config/items/itemtypes/zabbix_agent
- 例如: 键名为 system.uname 对应的方法为 uname -snrvp
- 可以在zabbix-server上通过键去采集agent上相应的系统信息
-
自定义键
#格式:UserParameter=键,方法 (键名自定义,方法为采集所需数据的命令)
UserParameter=test.count,ls /test |wc -l #自定义键监控/test目录下文件的数量
-
启动服务
- systemctl start zabbix-agent
检测CS连通性
-
zabbix-server上执行
- zabbix_get -s 1.1.1.12 -k system.uname
-
如果CS通信正常, 采集到的数据应该跟在agent上直接执行相应的命令得到的结果是一致的
添加主机组
host group
- 主机的逻辑组, 包含主机和模板,主机与模板之间并无关联
- 通常在给不同用户组的主机分配权限时候使用主机组
步骤
- 配置->主机群组->创建主机群组->自定义组名->添加
添加主机
host
- 主机是指要监控的网络设备,可由IP或DNS名称指定
步骤
-
配置->主机->创建主机->填写各项内容->添加
-
内容项
-
主机名称
- 主机名,要与agent配置文件中的主机名一致
-
可见的名称
- 主机别名,在主机列表里显示的名称,默认为主机名称
-
键值
- 采集数据所对应的键,内置键可直接选择,自定义键手动填写
-
群组
- 选择属于哪些主机组,一个或多个
-
Interfaces
- 填写主机的IP地址或域名,与"连接到"对应,域名需解析
-
添加监控项
item
- 一个特定监控指标的相关的数据,这些数据来自于被监控对象
- item是zabbix进行数据收集的核心,相对某个监控对象,每个item都由"key"标识
步骤
-
配置->主机->监控项->创建监控项->填写各项内容->添加
-
内容项
-
名称
- 自定义,具体描述所监控的数据
-
类型
- 监控模式,默认为被动,即"Zabbix 客户端"。主动为"Zabbix 客户端(主动式)"
-
键值
- 采集数据所对应的键,内置键可直接选择,自定义键手动填写
-
主机接口
- 默认配置
-
信息类型
- 与所监控的数据类型相对应,否则无法识别
-
单位
- 自定义,可选
-
更新间隔
- 监控的频率,可直接填写时间或灵活定义
-
趋势存储时间
- 长期的聚合数据保留时长
-
新的应用集
- 创建并加入该应用集
-
应用集
- 选择加入应用集,可多选
-
进程
-
用于对监控项获取的值做预处理
-
在将值保存到数据库之前,可以进行一次或多次转换。 转换按照定义的顺序执行
-
转换规则
-
正则表达式
- 将值与匹配,并将值替换为。 支持使用\N序列提取最多10个捕获的组。 无法匹配输入值将使监控项不受支持
-
修整
- 从值的起始和结尾删除指定的字符
-
修整右边
- 从值的末尾删除指定的字符
-
自定义倍数
- 将值乘以指定的整数或浮点值
-
修整左边
- 从值的起始处删除指定的字符
-
简单更改
- 计算当前值和上一个值之间的差值
-
每秒更改
- 计算每秒速度的值变化(当前值和上一个值的差值), 以获得每秒不断增长的速度值
-
应用集
-
application
- 一种用于把监控项分组的逻辑组,也用于给Web场景分组
-
创建
-
方式一
- 添加监控项时填写“新的应用集”
-
方式二
- 配置->主机->应用集->创建应用集->自定义名称->添加
-
UserParameters
-
当zabbix内置的监控项(item:key)不能满足需求时,用户可以在zabbix-agent上自定义参数
-
语法格式
-
UserParameter=key,command
-
UserParameter=key[*],command
- 在使用时,[]中的第一个参数会传递给命令中的 1 , . . . ( a w k 命名中的 1, ...(awk命名中的 1,...(awk命名中的需改为$$以作区分)
-
-
定义位置
UserParameter=mem.available,awk ‘/^MemAvailable/{print $2}’ /proc/meminfo
- # vim /etc/zabbix_agentd.conf
Include=/etc/zabbix_agentd.d/*.conf
vim /etc/zabbix/zabbix_agentd.d/xxx.conf
UserParameter=memory.info[*],awk ‘/^$1/{print $$2}’ /proc/meminfo
#调用:zabbix_get -s 192.168.10.12 -k memory.info[MemFree]
添加触发器
trigger
-
触发器用于界定某特定的item采集到的数据的非合理区间或非合理状态。通常为逻辑表达式
-
逻辑表达式(阈值)
-
通常用于定义数据的不合理区间
-
结果
-
OK(不符合条件)
- 正常状态
-
PROBLEM(符合条件)
- 非正常状态
-
-
-
一般评定采样数值是否为合理区间的比较稳妥的方法是根据最后N次的平均值来判定结果
-
最后N次通常有两种定义方式:最近N分钟所得结果的平均值/最近N次所得结果的平均值
步骤
-
配置->主机->触发器->创建触发器->填写各项内容->添加
-
内容项
-
名称
- 自定义,具体描述哪个监控项的触发条件
-
严重性
- 选择问题的严重性
-
表达式
- 触发器表达式,添加或手动填写,需指定监控项和判断条件
-
触发器的依赖关系
-
触发器彼此之间可能会存在依赖关系,一旦某一个触发器被触发了,那么依赖这个触发器的其余触发器都不需要再报警(便于定位故障)
-
目前zabbix不能够直接定义主机间的依赖关系,其依赖关系仅能通过触发器来定义
-
建立依赖关系
- 配置->主机->触发器->选择触发器->依赖关系添加->选择触发器->更新
-
示例
-
触发器
-
- 监控httpd的运行状态, 当httpd没有运行时就报警
-
- 监控web资源,比如/index.html, 如果get不到这个资源就报警
-
-
依赖
- 很明显, 如果apache宕机了, 这两个触发器的条件都会满足
- 如果不定义依赖关系, 必然会触发两个报警
- 如果在定义第2个触发器时依赖第1个, 那么当apache宕机了, 则只会触发第1个报警
-
配置报警媒介类型
media
- 发送通知的手段或者通道,如Email、SMS或者微信等
位置
- 管理->报警媒介类型。配置好后可点击测试来验证
邮件报警
-
选择Email
-
SMTP服务器
- smtp.163.com
-
SMTP HELO
- 163.com
-
SMTP电邮
- 17733179623@163.com
-
认证
- 用户名和密码
-
用户名称
- 17733179623@163.com
-
密码
- 授权码
-
微信报警
-
企业微信
- 注册企业微信
- 通讯录->添加子部门->往子部门添加成员,点开添加的成员记录帐号
- 应用管理->创建应用(对子部门可见),记录Agentid及Secret
- 点我的企业,记下企业ID
- 手机端下载企业微信登录
-
zabbix服务器
-
上传微信报警脚本到/usr/lib/zabbix/alertscripts/目录下并添加执行权限
-
测试微信报警脚本
- ./wechat.sh --CorpID=企业ID --Secret=应用secret --AgentID=应用agentid --UserID=成员账号 --Msg=“消息内容”
- 手机端企业微信要能收到测试的消息内容
- 可能报错:“errcode”:60020…from ip: 183.48.81.221。解决:把这个IP加到企业微信应用中的"企业可信IP"中
-
-
创建媒体类型
-
名称
-
类型
- 脚本
-
脚本名称
- wechat.sh
-
脚本参数
- –CorpID=xxxxxx
- –Secret=xxxxxx
- –AgentID=1000002
- –UserID={ALERT.SENDTO}
- –Msg={ALERT.MESSAGE}
-
Message templates
- 添加Message type,可自定义或使用模板
-
配置用户
定义接收告警的用户
步骤
- 管理->用户->Admin->报警媒介->添加->更新
添加内容
-
类型
- 选择报警类型
-
收件人
- Email对应邮箱账号,微信对应成员账号(不区分大小写)
-
当启用时
- 自定义启用时间段
添加动作
action
- 指对于特定事件事先定义的处理方法,如发送通知,执行脚本等
- 动作是在某些特定条件下触发的,比如某个触发器被触发了就执行定义的动作
步骤
-
配置->动作->Trigger actions->创建动作->填写内容项->添加
-
内容项
-
动作
-
名称
- 自定义动作名称,详细描述
-
条件
-
添加
-
类型
- 触发器
-
触发器
-
选择
-
选择主机组
-
选择主机
- 选择触发器
-
-
-
-
-
-
-
操作
-
默认操作步骤持续时间
- 步骤持续的默认时间,最少1分钟
-
暂停操作以制止问题
- 延长维护期间操作. 如果不选, 维护期间也立即执行
-
操作
-
触发器被触发时执行的动作
-
添加
-
操作类型
-
发送消息
-
仅送到
- 选择报警媒介类型
-
Send to user groups
/Send to users- 选择用户或用户群组
-
Custom message
- 自定义消息内容,未定义则使用报警媒介类型中定义的消息模板
-
-
远程命令
-
目标列表
- 勾选当前主机或具体选择
-
类型
- 自定义脚本
-
命令
- sudo systemctl restart nginx
-
-
-
步骤
- 第几步到第几步
-
步骤持续时间
- 与下一步之间的时间间隔。0表示默认时间
-
-
-
恢复操作
- 问题得到修复后执行的动作
- 建议至少添加发送消息的动作
-
更新操作
-
-
操作类型
AllowKey=system.run[*] #允许远程命令
LogRemoteCommands=1 #将远程命令记录到日志
- 给zabbix用户提权
- echo "zabbix ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/zabbix
- 添加动作
可视化
zabbix提示了众多的可视化工具提供直观展示,如graph、screen及map等
自定义图形
-
可以集中展示多个时间序列的数据流
-
支持“线状图(normal)”、“堆叠面积图(stacked)”、“饼图(pie)” 和“分离型饼图(exploded)”四种不同形式的图形
-
步骤
-
配置->主机->图形->创建图形->填写内容项->添加
-
内容项
-
名称
- 自定义名称,详细描述数据内容
-
图形类别
- 选择图形类别
-
监控项
- 添加监控项,可多个
-
-
聚合图形
-
将多个图形放在一个页面中显示
-
步骤
- 检测->聚合图形->创建聚合图形->选择所有者->自定义名称->自定义行数列数->添加->构造函数->更改->选择图形
模板
template
- 用于快速定义被监控主机的预设条目集合,通常包含了应用集、监控项、触发器、图形、聚合图形、自动发现。模板可以链接其他模板,主机链接模板
创建
- 配置->模板->创建模板->自定义模板名称->选择群组->添加->列表中找到该模板->配置监控项、触发器等
使用
-
链接
- 配置->主机->进入主机->模板->选择Link new templates->选择主机群组->选择模板->更新
-
取消链接
- 配置->主机->进入主机->模板->链接的模板->选择对应模板取消链接或取消链接并清理->更新
-
若模板中的监控项使用了自定义键,则链接该模板的主机上注意也要定义对应的自定义键才能使用
导入
-
zabbix官方模板库
- https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates
-
github分享模板
- https://github.com/CNSRE/Zabbix-Templates
- https://github.com/topics/zabbix-templates
-
步骤
- 将模板文件(.xml)下载至本地->配置->模板->导入->选择文件->导入
导出
- 配置->模板->勾选模板->导出
- 若是自定义模板注意把配置文件也保存一下
web监测
介绍
- 监控指定的站点的资源下载速度,及页面响应时间,还有响应代码
术语
-
web Scenarios
- web场景(站点)
-
web page
- web页面,一个场景有多个页面
-
內建key
- 要测一个页面,要测三个步骤(下边3个內建key)
内建key
-
web.test.in[Scenario,Step,bps]
- 传输速率
-
web.test.time[Scenario,Step]
- 响应时长
-
web.test.rspcode[Scenario,Step]
- 响应码
创建
- 配置->主机->web监测->创建web场景->自定义名称->步骤->步骤添加->定义步骤名称->填写监测URL->添加->添加
自动发现
介绍
- server通过发现规则自动扫描agent并执行发现动作(将其添加主机、主机组、关联模板等)
创建发现规则
-
配置->自动发现->创建发现规则->填写内容项->添加
-
内容项
-
名称
- 自定义
-
IP范围
- 自动发现扫描的IP范围,如192.168.0.1-254
-
更新间隔
- 扫描整个网段很耗资源,不要太过频繁
-
检查
- 添加检查类型,定义检查哪些内容
- 如Zabbix 客户端 “system.hostname”,获取主机名
-
设备唯一性准则
- 选择区分主机的标准
-
主机名称
- 自动添加主机时的名称
-
可见的名称
- 自动添加主机时的名称
-
启用
- 创建发现动作后再启用,否则会直接开始扫描(无动作则没有相应操作)
-
创建发现动作
-
配置->动作->Discovery actions(左上下拉)->创建动作->定义名称->添加条件->选择触发条件->操作->添加操作->添加
-
条件
-
类型
- 自动发现检查
-
选择自动发现检查
-
若有多个条件需定义计算方式
-
-
操作
- 添加主机
- 添加到主机群组
- 与模板关联
自动注册
介绍
- agent主动联系server,再由server自动执行相应动(通过元数据匹配触发)作
- 自动发现与自动注册选择其中之一即可,自动发现需持续扫面消耗资源大,推荐自动注册
创建动作
-
配置->动作->自动注册动作(左上下拉)->创建动作->定义名称->添加条件->选择触发条件->操作->添加操作->添加
-
条件
-
类型
- 主机元数据
-
值
- 元数据标签
-
若有多个条件需定义计算方式
-
-
操作
- 添加主机
- 添加到主机群组
- 与模板关联
agent配置
Server=192.168.10.11
ServerActive=192.168.10.11
Hostname=host5
HostMetadata=Linux #元数据标签,自定义
systemctl restart zabbix-agent
宏
macro
- 预设的文本替换模式,据一些列预定义的规则替换一定的文本模式,解释或编译器在遇到宏时会自动进行这一模式替换
- 类似地,zabbix基于宏保存预设文本模式,并且在调用时将其替换为其中的文本
事件(event)
- 触发一个值得关注的事情,比如触发器状态转变,新的agent或重新上线的agent的自动注册等
宏的级别
-
全局宏
- 全局定义, 优先级最低,可用于所有的主机及模板
-
模板宏
- 在模板上定义
-
主机宏
- 在主机上定义, 优先级最高
内置宏{MACRO}
-
https://www.zabbix.com/documentation/5.0/zh/manual/appendix/macros/supported_by_location
-
{HOST.NAME}
- 主机名
-
{EVENT.DATE}
- 事件发生的日期
-
{EVENT.TIME}
- 事件发生的时间
-
{TRIGGER.NAME}
- 触发器名称
-
{TRIGGER.SEVERITY}
- 问题的等级
-
{ITEM.NAME}
- 监控项名称
-
{ITEM.KEY}
- 监控项的键名
-
{ITEM.VALUE}
- 监控项的值
-
{ALERT.SENDTO}
- 报警媒介收件人
-
{ALERT.MESSAGE}
- 报警媒介或动作配置的消息
自定义宏{$MACRO}
-
在调用和定义时都需要加$,宏的名称只能使用大写字母、数字及下划线
-
全局宏
- 管理->一般->宏(左上下拉)->添加->更新
-
模板宏
- 配置->模板->进入模板->宏->添加->更新
-
主机宏
- 配置->主机->进入主机->宏->添加->更新
宏的替换次序
-
查找顺序、优先级顺序
- 主机–>模板–>全局
-
首先是主机级别的宏;
-
其次是当前主机上一级模板中(直接链接至主机的模板)的宏,多个一级模板按其ID号排序
-
再接着是二级模板(模板链接的模板)中的宏;而后依次类推
-
最后检查的是全局宏
-
zabbix如果无法查找到某主机定义使用的宏,则不会对其进行替换操作
使用场景
-
触发器名称和表达式
- Processor load is too high on {HOST.NAME}
-
报警信息模板中
- 主机:{HOST.NAME}
…
- 主机:{HOST.NAME}
-
监控项名称和键值参数中
- 宏只能用在监控项键值参数的一部分中,例如 item.key[server_{HOST.HOST}_local]
-
主机接口IP/DNS及端口
JMX监控
zabbix基于JMX监控tomcat
安装配置tomcat
1.1.1.22
- yum -y install java-1.8.0-openjdk-devel tomcat-admin-webapps tomcat-docs-webapp
- [root@tomcat ~]# vim /etc/sysconfig/tomcat
#添加CATALINA_OPTS,Djava.rmi.server.hostname为tomcat服务器IP地址
CATALINA_OPTS=“-Djava.rmi.server.hostname=1.1.1.22 -Djavax.management.builder.initial= -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false” - systemctl start tomcat;systemctl enable tomcat
安装配置zabbix-agent
1.1.1.22
安装配置java-gateway
1.1.1.21
- [root@zabbix-server ~]# yum -y install zabbix-java-gateway
- [root@zabbix-server ~]# systemctl start zabbix-java-gateway;systemctl enable zabbix-java-gateway
安装配置zabbix-server
1.1.1.21
- 安装略
- [root@zabbix-server ~]# vim /etc/zabbix/zabbix_server.conf
JavaGateway=1.1.1.21 #zabbix-server地址
JavaGatewayPort=10052
StartJavaPollers=5 #打开5个监控项 - [root@zabbix-server ~]# systemctl restart zabbix-server
zabbix web配置监控主机
-
配置 -> 主机 -> 创建主机 -> 填写配置 -> 添加
-
主机
-
主机名称:tomcat
-
群组:tomcat(需先创建或加入其他群组)
-
Interfaces
- 客户端IP地址:1.1.1.22
- 添加JMX IP地址:1.1.1.22
-
-
模板
-
Link new templates
- 选择Templates主机群组中的Template App Apache Tomcat JMX模板
-
观察监测
- 观察主机状态及JMX可用性是否正常
- 监测主机
分布式监控
介绍
- 分布式主要适合于服务器数量特别大, 或是跨机房、跨地区监控。每个分节点(proxy)收集数据并传送给server
- zabbix proxy可以代替server收集性能和可用性数据,然后把数据汇报给server,分担了server 的压力
zabbix proxy使用场景
- 监控远程区域设备
- 监控本地网络不稳定区域
- 当zabbix监控上千设备时,使用它来减轻server 的压力
- 简化分布式监控的维护
实验
-
目标
- 布署zabbix分布式监控,zabbix-server直接监控 agent1,通过proxy监控agent2
-
zabbix-server
1.1.1.11- 部署zabbix-server
-
zabbix-proxy
1.1.1.12
[mysqld]
skip_name_resolve = ON #跳过主机名解析
innodb_file_per_table = ON
innodb_buffer_pool_size = 256M #缓存池大小
max_connections = 1000 #最大连接数
log-bin = logbin #开启二进制日志
- 安全初始化
- mysql_secure_installation
- 设置密码,删除匿名用户,禁止root远程登录,删除test库
- 建库并授权
- > create database zabbix_proxy character set 'utf8' collate utf8_bin;
- > grant all on zabbix_proxy.* to 'zabbixproxy'@'localhost' identified by '123';
- > flush privileges;
- 导表
- zcat /usr/share/doc/zabbix-proxy-mysql-5.0.24/schema.sql.gz |mysql -u zabbixproxy -p123 -D zabbix_proxy
- 主配置文件
- # vim /etc/zabbix/zabbix_proxy.conf
Server=1.1.1.11 # zabbix-server地址
Hostname=host3 # 自己的主机名
DBName=zabbix_proxy
DBUser=zabbixproxy
DBPassword=123
ConfigFrequency=30 #代理从Zabbix服务器检索配置数据的频率(s), 默认为3600. 为了实验效果设置为30
- 启动服务
- systemctl start zabbix-proxy
Server=1.1.1.11
ServerActive=1.1.1.11
Hostname=host3
- 启动
- systemctl start zabbix-agent
Server=1.1.1.12
ServerActive=1.1.1.12
Hostname=host4
- 启动
- systemctl start zabbix-agent
-
zabbix web
-
配置代理
- 管理->agent代理程序->创建代理->自定义名称->主动式->代理地址(1.1.1.12)->添加
-
配置agent1
- 配置->主机->创建主机->自定义名称->选择群组->Interfaces(1.1.1.13)->添加
-
配置agent2
- 配置->主机->创建主机->自定义名称->选择群组->Interfaces(1.1.1.14)->由agent代理程序监测(选择代理名称)->添加
-
创建监控项测试
- 注意监控项类型要与代理模式一致(主动式)
-
调优
Database
- 历史数据不要保存太长时长
- 尽量让数据缓存在数据库服务器的内存中
触发器表达式
- 减少使用聚合函数min()、max()、avg(),聚合函数要运算
- 尽量使用last()、nodata()
数据收集
- polling较慢(减少使用SNMP/agentless/agent)
- 尽量使用trapping(agent(active)主动监控)
数据类型
- 文本型数据处理速度较慢,尽量少收集类型为文本text或string类型的数据
- 多使用类型为numeric 数值型数据的