监控数据收集及可视化
异常数据报警
和其他的系统协同工作
server
agent
Zabbix Server
Database Storage
Web interface
Proxy
Agent
agentd需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图。agentd收集数据分为主动和被动两种模式
主动监测
agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy
过程
获取ACTIVE ITEMS列表
提交数据
被动监测
server向agent请求获取监控项的数据,agent返回数据
过程
1.1.1.11
配置zabbix源
安装zabbix
启动数据库
建库授权
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by ‘zabbix’;
导入zabbix表
修改主配置文件
DBPassword=zabbix
配置时区
php_value[date.timezone] = Asia/Shanghai
启动服务
安装应用
设置语言
重置密码
修改users表,将对应用户的passwd列内容改为下列密文
$2y 10 10 10EJ64ugc3YEnGH2jaM06XCO68igbTx4LpkcfVPnzoJHRy8Wm8h0Hti
1.1.1.12
安装agent
修改agent配置文件
Server=1.1.1.11
ServerActive=1.1.1.11
Hostname=agent #最好与本机主机名一致
键
自定义键
#格式:UserParameter=键,方法 (键名自定义,方法为采集所需数据的命令)
UserParameter=test.count,ls /test |wc -l #自定义键监控/test目录下文件的数量
启动服务
zabbix-server上执行
如果CS通信正常, 采集到的数据应该跟在agent上直接执行相应的命令得到的结果是一致的
配置->主机->创建主机->填写各项内容->添加
内容项
主机名称
可见的名称
键值
群组
Interfaces
配置->主机->监控项->创建监控项->填写各项内容->添加
内容项
名称
类型
键值
主机接口
信息类型
单位
更新间隔
趋势存储时间
新的应用集
应用集
用于对监控项获取的值做预处理
在将值保存到数据库之前,可以进行一次或多次转换。 转换按照定义的顺序执行
转换规则
正则表达式
修整
修整右边
自定义倍数
修整左边
简单更改
每秒更改
application
创建
方式一
方式二
当zabbix内置的监控项(item:key)不能满足需求时,用户可以在zabbix-agent上自定义参数
语法格式
UserParameter=key,command
UserParameter=key[*],command
定义位置
UserParameter=mem.available,awk ‘/^MemAvailable/{print $2}’ /proc/meminfo
- # vim /etc/zabbix_agentd.conf
Include=/etc/zabbix_agentd.d/*.conf
UserParameter=memory.info[*],awk ‘/^$1/{print $$2}’ /proc/meminfo
#调用:zabbix_get -s 192.168.10.12 -k memory.info[MemFree]
触发器用于界定某特定的item采集到的数据的非合理区间或非合理状态。通常为逻辑表达式
逻辑表达式(阈值)
通常用于定义数据的不合理区间
结果
OK(不符合条件)
PROBLEM(符合条件)
一般评定采样数值是否为合理区间的比较稳妥的方法是根据最后N次的平均值来判定结果
最后N次通常有两种定义方式:最近N分钟所得结果的平均值/最近N次所得结果的平均值
配置->主机->触发器->创建触发器->填写各项内容->添加
内容项
名称
严重性
表达式
触发器彼此之间可能会存在依赖关系,一旦某一个触发器被触发了,那么依赖这个触发器的其余触发器都不需要再报警(便于定位故障)
目前zabbix不能够直接定义主机间的依赖关系,其依赖关系仅能通过触发器来定义
建立依赖关系
示例
触发器
依赖
选择Email
SMTP服务器
SMTP HELO
SMTP电邮
认证
用户名称
密码
企业微信
zabbix服务器
上传微信报警脚本到/usr/lib/zabbix/alertscripts/目录下并添加执行权限
测试微信报警脚本
创建媒体类型
名称
类型
脚本名称
脚本参数
Message templates
类型
收件人
当启用时
配置->动作->Trigger actions->创建动作->填写内容项->添加
内容项
动作
名称
条件
添加
类型
触发器
选择
选择主机组
选择主机
操作
默认操作步骤持续时间
暂停操作以制止问题
操作
触发器被触发时执行的动作
添加
操作类型
发送消息
仅送到
Send to user groups
/Send to users
Custom message
远程命令
目标列表
类型
命令
步骤
步骤持续时间
恢复操作
更新操作
发送消息
远程命令
配置
修改agent配置文件
AllowKey=system.run[*] #允许远程命令
LogRemoteCommands=1 #将远程命令记录到日志
- 给zabbix用户提权
- echo "zabbix ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/zabbix
- 添加动作
可以集中展示多个时间序列的数据流
支持“线状图(normal)”、“堆叠面积图(stacked)”、“饼图(pie)” 和“分离型饼图(exploded)”四种不同形式的图形
步骤
配置->主机->图形->创建图形->填写内容项->添加
内容项
名称
图形类别
监控项
将多个图形放在一个页面中显示
步骤
链接
取消链接
若模板中的监控项使用了自定义键,则链接该模板的主机上注意也要定义对应的自定义键才能使用
zabbix官方模板库
github分享模板
步骤
web Scenarios
web page
內建key
web.test.in[Scenario,Step,bps]
web.test.time[Scenario,Step]
web.test.rspcode[Scenario,Step]
配置->自动发现->创建发现规则->填写内容项->添加
内容项
名称
IP范围
更新间隔
检查
设备唯一性准则
主机名称
可见的名称
启用
配置->动作->Discovery actions(左上下拉)->创建动作->定义名称->添加条件->选择触发条件->操作->添加操作->添加
条件
类型
选择自动发现检查
若有多个条件需定义计算方式
操作
配置->动作->自动注册动作(左上下拉)->创建动作->定义名称->添加条件->选择触发条件->操作->添加操作->添加
条件
类型
值
若有多个条件需定义计算方式
操作
Server=192.168.10.11
ServerActive=192.168.10.11
Hostname=host5
HostMetadata=Linux #元数据标签,自定义
全局宏
模板宏
主机宏
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}
在调用和定义时都需要加$,宏的名称只能使用大写字母、数字及下划线
全局宏
模板宏
主机宏
查找顺序、优先级顺序
首先是主机级别的宏;
其次是当前主机上一级模板中(直接链接至主机的模板)的宏,多个一级模板按其ID号排序
再接着是二级模板(模板链接的模板)中的宏;而后依次类推
最后检查的是全局宏
zabbix如果无法查找到某主机定义使用的宏,则不会对其进行替换操作
触发器名称和表达式
报警信息模板中
监控项名称和键值参数中
主机接口IP/DNS及端口
1.1.1.22
1.1.1.22
1.1.1.21
1.1.1.21
配置 -> 主机 -> 创建主机 -> 填写配置 -> 添加
主机
主机名称:tomcat
群组:tomcat(需先创建或加入其他群组)
Interfaces
模板
Link new templates
目标
zabbix-server
1.1.1.11
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
agent1
1.1.1.13
安装
配置
Server=1.1.1.11
ServerActive=1.1.1.11
Hostname=host3
- 启动
- systemctl start zabbix-agent
agent2
1.1.1.14
安装
配置
Server=1.1.1.12
ServerActive=1.1.1.12
Hostname=host4
- 启动
- systemctl start zabbix-agent
zabbix web
配置代理
配置agent1
配置agent2
创建监控项测试