zabbix

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
  • 修改主配置文件

    • cp /etc/zabbix/zabbix_server.conf{,.bak}
    • vim /etc/zabbix/zabbix_server.conf

DBPassword=zabbix

  • 配置时区

    • vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf

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配置文件

    • cp /etc/zabbix_agentd.conf{,.bak}
    • vim /etc/zabbix_agentd.conf

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上相应的系统信息
  • 自定义键

    • vim /etc/zabbix_agentd.conf

#格式: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命名中的需改为$$以作区分)
  • 定义位置

    • vim /etc/zabbix_agentd.conf

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不能够直接定义主机间的依赖关系,其依赖关系仅能通过触发器来定义

  • 建立依赖关系

    • 配置->主机->触发器->选择触发器->依赖关系添加->选择触发器->更新
  • 示例

    • 触发器

        1. 监控httpd的运行状态, 当httpd没有运行时就报警
        1. 监控web资源,比如/index.html, 如果get不到这个资源就报警
    • 依赖

      • 很明显, 如果apache宕机了, 这两个触发器的条件都会满足
      • 如果不定义依赖关系, 必然会触发两个报警
      • 如果在定义第2个触发器时依赖第1个, 那么当apache宕机了, 则只会触发第1个报警

配置报警媒介类型

media

  • 发送通知的手段或者通道,如Email、SMS或者微信等

位置

  • 管理->报警媒介类型。配置好后可点击测试来验证

邮件报警

微信报警

  • 企业微信

    • 注册企业微信
    • 通讯录->添加子部门->往子部门添加成员,点开添加的成员记录帐号
    • 应用管理->创建应用(对子部门可见),记录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
    • 类型

      • 脚本
    • 脚本名称

      • 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表示默认时间
      • 恢复操作

        • 问题得到修复后执行的动作
        • 建议至少添加发送消息的动作
      • 更新操作

操作类型

  • 发送消息

  • 远程命令

    • 配置

      • 修改agent配置文件

        • vim /etc/zabbix_agentd.conf

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配置

  • vim /etc/zabbix_agentd.conf

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}
  • 监控项名称和键值参数中

    • 宏只能用在监控项键值参数的一部分中,例如 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

    • 安装

      • rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
      • yum -y install zabbix-proxy-mysql zabbix-get zabbix-agent zabbix-sender mariadb-server
    • 数据库

      • 修改配置文件(可选)

        • vim /etc/my.cnf.d/server.cnf

[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

    • 安装

      • yum -y install zabbix-agent
    • 配置

      • vim /etc/zabbix_agentd.conf

Server=1.1.1.11
ServerActive=1.1.1.11
Hostname=host3

- 启动

	- systemctl start zabbix-agent
  • agent2
    1.1.1.14

    • 安装

      • yum -y install zabbix-agent
    • 配置

      • vim /etc/zabbix_agentd.conf

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 数值型数据的

你可能感兴趣的:(zabbix,服务器,javascript)