当前位置: 首页 > news >正文

自动化基础随心记三-zabbix

一、概述

官方文档

结构体系

Zabbix 由几个主要的软件组件组成。他们的职责概述如下。

Server

Zabbix server 是 agents 向其报告可用性和完整性信息和统计信息的中心组件。server 是存储所有配置、统计和操作数据的中央存储库。

数据存储

Zabbix 收集的所有配置信息以及数据都存储在数据库中。

Web 界面

为了从任何地方和任何平台轻松访问,Zabbix 提供了基于 Web 的界面。该接口是 Zabbix server 的一部分,通常(但不一定)与 server 运行在同一台设备上。

Proxy

Zabbix proxy 可以代替 Zabbix server 收集性能和可用性数据。proxy 是 Zabbix 部署的可选部分;但是对于分散单个 Zabbix server 的负载非常有用。

Agent

Zabbix agent 部署在被监控目标上,以主动监控本地资源和应用程序,并将收集到的数据报告给 Zabbix server。从 Zabbix 4.4 开始,有两种类型的 agent 可用:Zabbix agent (轻量级,在许多平台上支持,用 C 编写)和 Zabbix agent 2 (非常灵活,易于使用插件扩展,用 Go 编写)。

数据流

此外,回顾一下 Zabbix 中的整体数据流也是很重要的。为了创建一个收集数据的监控项,必须首先创建一个主机。另一方面 Zabbix 必须首先拥有一个监控项来创建触发器。必须有触发器才能创建动作。因此,如果你想收到 服务器 X 上的 CPU 负载过高的警报,必须首先为 服务器 X 创建一个主机条目,然后创建一个用于监控其 CPU 的监控项,然后是一个触发器,如果 CPU 过高则触发动作,然后通过通过动作操作向您发送电子邮件。这可能看起来像很多步骤,其实使用模板并不需要。而且,由于这种设计,可以自定义创建非常灵活的设置。

二、定义

host(主机) - 要通过 IP/DNS 监控的联网设备。

host group(主机组) - 主机的逻辑分组;它可能包含主机和模板。主机组中的主机和模板没有以任何方式相互链接。在为不同用户组分配主机访问权限时使用主机组。

item(监控项) - 你想要接收的主机的特定数据,一个度量/指标数据。

value preprocessing(值预处理) - 在数据存入数据库之前 转化/预处理接收到的指标数据。*

trigger(触发器) - 一个被用于定义问题阈值和 “评估” 控项接收到的数据的逻辑表达式。 当接收到的数据高于阈值时,触发器从 ‘Ok’ 变成 ‘Problem’ 状态。当接收到的数据低于阈值时,触发器保留/返回 ‘Ok’ 的状态。

event(事件) - 一次发生的需要注意的事情,例如 触发器状态改变、自动发现/agent 自动注册。

event tag(事件标签) - 预设的事件标记 可以被用于事件关联,权限细化设置等。

event correlation(事件关联) - 一种灵活而精确地将问题与其解决方法联系起来的方法 比如说,你可以定义触发器A告警的异常可以由触发器B解决,触发器B可能采用完全不同的数据采集方式。

problem(问题) - 一个处在 “问题” 状态的触发器。

problem update(问题更新) - Zabbix 提供的问题管理选项,例如添加评论、确认、更改严重性或手动关闭。

action(动作) - 对事件作出反应的预先定义的方法。 一个动作由多个操作(例如发送通知))和条件(什么情况下 执行操作)组成。

escalation(升级) - 用于在动作中执行操作的自定义场景;发送通知/执行远程命令的序列。

media(媒体) - 发送告警通知的渠道;传输媒介。

notification(通知) - 通过选定的媒体通道发送给用户的关于某个事件的消息。

remote command(远程命令) - 在某些条件下在受监控主机上自动执行的预定义命令。

template(模板) - 可以应用于一个或多个主机的一组实体集 (包含监控项、触发器、图表、低级别自动发现规则、web场景等)。 模版的应用使得主机上的监控任务部署快捷方便;也可以使监控任务的批量修改更加简单。模版是直接关联到每台单独的主机上。

web scenario(web 场景) - 检查一个网站的可用性的一个或多个HTTP请求。

frontend(前端) - Zabbix的web界面。

dashboard(仪表盘) - web界面的可定制部分,以可视化的单元(又叫小部件)显示重要信息的摘要和可视化。

widget(小部件) - 在仪表板中使用的显示某种类型和来源的信息(摘要、地图、图表、时钟等)的可视化单元。

Zabbix API - Zabbix API 允许您使用 JSON RPC 协议来创建、更新和获取 Zabbix 对象(如主机、监控项、图表等)或执行任何其他自定义任务。

Zabbix server - Zabbix 软件的中央进程,执行监控、与 Zabbix proxy 和 agent 交互、计算触发器、发送通知;数据的中央存储库。

Zabbix proxy - 一个可以代表 Zabbix server 收集数据的进程,减轻 server 的一些处理负载。

Zabbix agent - 部署在被监控目标上以主动监控本地资源和应用程序的进程。

Zabbix agent 2 - 新一代 Zabbix agent,主动监控本地资源和应用程序,允许使用自定义插件进行监控。

encryption(加密) - 使用传输层安全 (TLS) 协议 支持Zabbix组件(server,proxy,agent,zabbix_sender 和 zabbix_get 实用程序)之间的加密通信 。

network discovery(网络发现) - 网络设备的自动发现。

low-level discovery(低级别自动发现) - 自动发现特定设备上的底层实体(例如:文件系统、网络接口等)

low-level discovery rule(自动别自动发现规则) - 用于在设备上自动发现低级别实体的一组定义。

item prototype(监控项原型) - 带有某些参数作为变量的度量,为低级别自动发现做好了准备。 在低级别自动发现之后,变量被自动替换为实际发现的参数,度量标准自动开始收集数据。

trigger prototype(触发器原型) - 以某些参数作为变量的触发器,为低级别自动发现做好准备。 在低级别自动发现之后,变量被自动替换为实际发现的参数,触发器自动开始计算数据。

其他一些 Zabbix 实体的 原型 也在低级别自动发现中使用 - 图形原型、主机原型、主机组原型。

agent autoregistration(agent 自动注册) - Zabbix agent 自动注册为主机 并开始监控的自动化过程。

三、安装部署(docker)

示范了如何运行 MySQL 数据库支持的 Zabbix Server 、基于 Nginx Web 服务器的 Zabbix Web 界面和 Zabbix Java 网关

1. 创建专用于 Zabbix 组件容器的网络

docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 zabbix-net

在这里插入图片描述

2. 启动空的 MySQL 服务器实例

docker run --name mysql-server -t \-e MYSQL_DATABASE="zabbix" \-e MYSQL_USER="zabbix" \-e MYSQL_PASSWORD="zabbix" \-e MYSQL_ROOT_PASSWORD="root" \-v /data/zabbix/db:/var/lib/mysql\-p 3306:3306 \--network=zabbix-net \--restart unless-stopped \-d mysql:8.0 \--character-set-server=utf8 --collation-server=utf8_bin \--default-authentication-plugin=mysql_native_password

3. 启动 Zabbix Java 网关实例

 docker run --name zabbix-java-gateway -t \--network=zabbix-net \--restart unless-stopped \-d zabbix/zabbix-java-gateway:alpine-5.4-latest

4. 启动 Zabbix server 实例,并将其关联到已创建的 MySQL server 实例

如果有配置文件zabbix_server.conf和目录alertscripts,可以上传到宿主机后挂载,如果没有就删除-v /data/zabbix/zabbix-server:/etc/zabbix和-v /data/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \

docker run --name zabbix-server-mysql -t \-e DB_SERVER_HOST="mysql-server" \-e MYSQL_DATABASE="zabbix" \-e MYSQL_USER="zabbix" \-e MYSQL_PASSWORD="zabbix" \-e MYSQL_ROOT_PASSWORD="root" \-e ZBX_JAVAGATEWAY="zabbix-java-gateway" \-v /data/zabbix/zabbix-server:/etc/zabbix \-v /data/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \--network=zabbix-net \-p 10051:10051 \--restart unless-stopped \-d zabbix/zabbix-server-mysql:alpine-5.4-latest

5. 启动 Zabbix Web 界面,并将其关联到已创建的 MySQL server 和 Zabbix server 实例

添加中文简体文件
从主机(C:\Windows\Fonts)上传一个.ttf的字体文件到/data/zabbix/fonts目录,并将文件名称改成DejaVuSans.ttf

docker run --name zabbix-web-nginx-mysql -t \-e ZBX_SERVER_HOST="zabbix-server-mysql" \-e DB_SERVER_HOST="mysql-server" \-e MYSQL_DATABASE="zabbix" \-e MYSQL_USER="zabbix" \-e MYSQL_PASSWORD="zabbix" \-e MYSQL_ROOT_PASSWORD="root" \-v /data/zabbix/fonts/DejaVuSans.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf \--network=zabbix-net \-p 80:8080 \--restart unless-stopped \-d zabbix/zabbix-web-nginx-mysql:alpine-5.4-latest

在这里插入图片描述
在这里插入图片描述
主机IP:80成功访问页面,初始用户名密码:Admin,zabbix

6. 监控zabbix服务端主机

docker run --name zabbix-agent2 -t \-e ZBX_SERVER_HOST="zabbix-server-mysql" \-e ZBX_SERVER_PORT=10051 \-e ZBX_HOSTNAME="Zabbix server" \--network=zabbix-net \-p 10050:10050 \--restart unless-stopped \-d zabbix/zabbix-agent2:alpine-5.4-latest

在这里插入图片描述
在这里插入图片描述

8. 完整docker-compose文件

services:zabbix-web-nginx-mysql:image: zabbix/zabbix-web-nginx-mysql:alpine-5.4-latestrestart: unless-stoppedenvironment:- DB_SERVER_HOST=mysql-server- MYSQL_DATABASE=zabbix- MYSQL_USER=zabbix- MYSQL_PASSWORD=zabbix- MYSQL_ROOT_PASSWORD=root- ZBX_SERVER_HOST=zabbix-server-mysqlports:- 80:8080volumes:- /data/zabbix/fonts/DejaVuSans.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttfnetworks:- zabbix-netdepends_on:- zabbix-server-mysql- mysql-servermysql-server:image: mysql:8.0restart: unless-stoppedports:- 3306:3306environment:- MYSQL_DATABASE=zabbix- MYSQL_USER=zabbix- MYSQL_PASSWORD=zabbix- MYSQL_ROOT_PASSWORD=rootcommand:- --default-authentication-plugin=mysql_native_password- --character-set-server=utf8- --collation-server=utf8_binvolumes:- /data/zabbix/db:/var/lib/mysqlnetworks:- zabbix-netzabbix-java-gateway:image: zabbix/zabbix-java-gateway:alpine-5.4-latestrestart: unless-stoppednetworks:- zabbix-netzabbix-server-mysql:image: zabbix/zabbix-server-mysql:alpine-5.4-latestrestart: unless-stoppedvolumes:- /data/zabbix/zabbix-server:/etc/zabbix- /data/zabbix/alertscripts:/usr/lib/zabbix/alertscriptsports:- 10051:10051environment:- DB_SERVER_HOST=mysql-server- MYSQL_DATABASE=zabbix- MYSQL_USER=zabbix- MYSQL_PASSWORD=zabbix- MYSQL_ROOT_PASSWORD=root- ZBX_JAVAGATEWAY=zabbix-java-gatewaydepends_on:- mysql-servernetworks:- zabbix-netzabbix-agent:image: zabbix/zabbix-agent2:alpine-5.4-latestrestart: unless-stoppedports:- 10050:10050environment:- ZBX_HOSTNAME=Zabbix server- ZBX_SERVER_HOST=zabbix-server-mysql- ZBX_SERVER_PORT=10051networks:- zabbix-netnetworks:zabbix-net:ipam:driver: defaultconfig:- subnet: 172.20.0.0/16ip_range: 172.20.240.0/20

7. 以源码包方式安装agent客户端并监控任意主机

一、下载源码包

地址:https://cdn.zabbix.com/zabbix/binaries/stable

二、将压缩包解压到/usr/local/zabbix_agent

tar -zxf zabbix_agent-5.4.9-linux-3.0-amd64-static.tar.gz -C /usr/local/zabbix_agent

三、编辑配置文件

vim /usr/local/zabbix_agent/conf/zabbix_agentd.conf
修改
LogFile=/var/log/zabbix/zabbix_agentd.log
Server=服务端的ip
ServerActive=服务端的ip
Hostname=客户端名字(与zabbix主机创建上的名字一致)
Include=指定conf文件的路径,一般在安装目录下的:/usr/local/zabbix_agent/conf/zabbix_agentd/*conf

四、创建zabbix用户并授权

useradd -r -s /usr/sbin/nologin zabbix
chown -R zabbix:zabbix /usr/local/zabbix_agent

五、书写systemctl配置文件

/etc/systemd/system/zabbix-agent.service

[Unit]
Description=Custom Zabbix Agent Command
After=syslog.target network.target[Service]
Type=forking
ExecStart=/usr/local/zabbix_agent/sbin/zabbix_agentd -c /usr/local/zabbix_agent/conf/zabbix_agentd.conf 
User=zabbix
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=5s[Install]
WantedBy=multi-user.target

加载配置文件
systemctl daemon-reload
启动和检查
systemctl enable zabbix-agent
systemctl start zabbix-agent
systemctl status zabbix-agent
在这里插入图片描述

web页面创建主机
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

四、自定义监控

例如监控bbs的8080端口

配置一下环境

vi ~/.bashrc
export PATH=$PATH:/usr/local/zabbix_agent/sbin/
source ~/.bashrcmkdir -p /usr/local/etc
ln -s /usr/local/zabbix_agent/conf/zabbix_agentd.conf /usr/local/etc/zabbix_agentd.conf

客户端

内置监控项和触发器可以看一下官方文档

1、在被监控的主机目录/usr/local/etc/zabbix_agentd.conf下创建bbsgo.conf文件

格式:UserParameter=key,cmd
UserParameter=固定写法,表示要自定义键值
key表示键值名字,cmd表示命令或脚本

UserParameter=bbs_port,ss -lntup|grep -w 8080|wc -l
2、重启客户端并测试
systemctl restart zabbix-agentzabbix_agentd -t bbs_port
#输出 bbs_port                                      [t|2]

服务端

测试

# -s 客户端IP -p 端口号 默认是10050 -k 指定键值
docker exec f4690d49e0cc /usr/bin/zabbix_get -s 172.26.4.123 -p 10050 -k bbs_port

web页面

1、配置监控项

在这里插入图片描述

2、触发器

在这里插入图片描述

3、图形

在这里插入图片描述

五、自定义模板

在这里插入图片描述
创建或者把主机上的监控项、触发器、图形等复制到模板上
在这里插入图片描述
给主机使用需要先有键值

六、发送邮件

1、创建媒体类型
在这里插入图片描述
2、配置发件人
用户名是邮件地址,密码是授权码,授权码在邮件官网获取
在这里插入图片描述
在这里插入图片描述

3、配置收件人
在这里插入图片描述
4、添加动作
在这里插入图片描述

七、Zabbix客户端概述

zabbix-agent/zabbix-agent2适用于几乎所有情况,支持自定义监控,linux,windows,android/ios
SNMP客户端用于监控网络设备
Simple Network Management Protocal 简单网络管理协议
JMXJava-gateway 监控java app(tomcat)
自定义监控 zabbix_agent2 + jmap/jstack
IPMI监控硬件(物理服务器,联想,华为,浪潮,DELL,IBM…)
直接使用自定义监控(ipmitool+megacli)

八、网站需要监控什么

  • 按照访问顺序监控:dns/cdn、安全组、负载均衡、web、数据库、存储、备份。
DNS是否可以解析自定义监控:ping/dig
域名:whois 域名 过滤过期时间
证书:curl -Lsv 域名 -o /dev/null 过滤过期时间
CDN是否可用,命中率阿里云接口
负载ngx服务情况,证书过期时间,网站访问量,并发…ngx/haproxy/keeplived状态:模板
证书:模板、自定义监控
网站访问量:ip,pv,uv
并发:统计80,443端口连接数
负载均衡健康检查模式upstream_check 自定义监控
访问日志(状态码),错误日志(error,failed数量)
web服务情况ngx,php,tomcat/jar包…
数据库redis,mysql模板
存储nfs…自定义监控,空间,能否使用…
备份备份的数据量是否有备份,空间…
  • 任何一台机器:
    硬件监控
    系统监控
    服务监控
    业务/app监控
    API接口监控
硬件监控物理服务器温度,湿度,风扇转数,raid状态…ipmi/自定义监控
系统监控cpu,负载,内存,硬盘,网络,带宽,io,进程,是否有非堡垒机登录模板,自定义监控
服务监控进程,端口;服务的状态;日志模板,自定义监控
业务/app监控检查应用是否可用curl命令
API接口监控APIcurl命令

八、自动发现与自动注册

自动发现(服务端主动)zbx服务端主动去找是否有新的主机,如果有则添加进来配置简单,不适合大量添加主机,临时性可用
自动注册(客户端主动)zbx客户端主动去找服务端提交自己的信息,请求向服务端注册配置繁琐,经常性,适用大量主机

1、自动发现

添加规则
在这里插入图片描述
添加动作
在这里插入图片描述

2、自动注册

1、修改zabbix客户端配置
Server=xxx
ServerActive=xxx
HostnameItem=system.hostname
HostMetadataItem=system.uname

2、web页面创建自动注册动作
在这里插入图片描述

相关文章:

  • 麒麟信安支撑2025年电力监控系统安全运维新技能推广应用示范培训班顺利举办
  • libcuckoo 介绍和使用指南
  • 高通IPA硬件加速介绍
  • 【MV】上下文感知选择算法:基于关键词映射简单实现
  • 面试官:介绍一下测试中常用的工具有哪些?
  • ACCU-100安科瑞协调控制器:精准调控光伏逆变器
  • 暴雨亮相EAC2025分享热管理液冷技术
  • Matlab的GUI编程之一
  • MATLAB实现图像纹理特征提取
  • 力扣-322.零钱兑换
  • C++四大默认成员函数:构造、析构、拷贝构造与赋值重载
  • 【Java多线程从青铜到王者】定时器的原理和实现(十一)
  • C. Cherry Bomb
  • 前缀和:leetcode974--和可被K整除的子数组
  • 【设计模式】UML类图与工厂模式
  • Python装饰器详解和默认装饰器
  • 【大模型推理】CTA与SM关系
  • 【解决方案】Kali 2022.3修复仓库密钥一键安装docker,docker compose
  • frp搭建踩坑....
  • 习惯养成、亲子互动、分龄对话,声网AI撑起儿童产品三大核心
  • 可以做全景的网站/营销宣传方案
  • 企业网站主页模板/优化关键词的方法
  • 网站设计费用/网络营销企业网站推广
  • 怎么在欧美做网站推广/电商网站建设哪家好
  • wordpress reference/南宁网站seo外包
  • 优秀网站推荐/市场营销策略有哪些