Zabbix灾难备份多种方式分享(建议收藏)

news2024/12/30 3:44:59

感谢本文译者田川 ! 欢迎更多资深用户翻译原厂博文(https://blog.zabbix.com/)!

田川 | 宏时数据技术工程师

· Zabbix 5.0中文手册官方译者

· 2017-2018年Zabbix中国峰会演讲嘉宾

· 8+年监控领域实施和管理工作经验

►在这篇博文中,我们将学习如何为 Zabbix 环境设置备份。在备份 Zabbix 环境时,有多种方案,对我们来说,选择其中一种最合适的即可。

介 绍

►监控是我们 IT 基础设施的一个重要组成部分,当我们的监控在某一时间段内不起作用时,会让我们感觉自己对 IT 组件失去掌控。因此,备份 Zabbix 监控环境是运行 Zabbix 生产环境的一个重要部分,“如果事情有变坏的可能,不管这种可能性有多小,它总会发生。”,所以我们确实需要为可能损坏甚至丢失数据的问题做好准备。

►对于 Zabbix,有几种不同的备份方法,而一切都是从数据库级别开始的,因为 Zabbix 前端和 Zabbix 服务器都将其数据写入 Zabbix 数据库中,如下图所示:

在这里插入图片描述

►这意味着我们的配置以及收集的所有监控数据都保存在同一个 Zabbix 数据库中,如果进行数据库备份,将备份几乎所有需要的内容。因此,就让我们从这里开始,看看如何进行数据库备份。

MySQL 备份

►让我们从 Zabbix 数据库最常用的版本开始:MySQL 和它的分支,如 MariaDB 和 Percona。所有这些版本都可以使用内置功能(如 MySQL dump 命令)轻松备份,当然我们也可以使用其它商业解决方案进行备份。

►首先,我们必须了解数据库中的表。Zabbix 环境中的大多数表都包含配置数据,因此,它们对备份都很重要。不过,我们需要重点关注几个表,因为它们可能包含 GB 甚至 TB 的数据量。主要是下表所列的历史、趋势和事件表:

在这里插入图片描述

►可以考虑从备份中省略这些表,从而进行更小、更易于管理的备份。

译者注:正如本文标题,此博文是指导如何快速恢复一个 Zabbix 环境的操作,所以忽略数据量大的数据表以缩短整体操作时间,读者可以根据自己的具体业务需要予以取舍。

►为了进行备份,我们可以使用 MySQL dump 等工具:
在这里插入图片描述

►备份完成后,我们可以使用 MySQL import 命令或简单地使用 cat 命令轻松地将其导回到原环境中:

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

►备份和恢复大量数据时可能需要很长时间。这完全取决于 MySQL 数据库性能调整设置以及 CPU、内存和磁盘 I/O 等底层资源。请确保查看 MySQL 文档以获取最新产品信息:

MySQL Dump: https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html / https://mariadb.com/kb/en/making-backups-with-mysqldump/
MySQL Import: https://dev.mysql.com/doc/refman/8.0/en/mysqlimport.html / https://mariadb.com/kb/en/mysqlimport/
►也可以使用 xtrabackup 和 mariadbackup 等工具创建备份。

译者注:根据数据量大小,小型业务环境,建议使用 mysqldump 进行备份和恢复,中型业务环境,建议使用 xtrabackup 进行备份和恢复,大型业务环境,建议使用商业解决方案。

PostgreSQL 备份

►我们实际上可以对 PostgreSQL 备份使用和 MySQL 类似的方法。记住所需的表,并使用内置工具进行:
在这里插入图片描述

►然后我们可以通过将文件加载进 postgres 来恢复:
在这里插入图片描述

配 置 文 件

►一旦我们有了数据库备份,一切就都被备份了吗?差不多吧。只有一个数据库备份,我们的业务基本算是安全的,但(这经常被忽略)Zabbix 环境里还有很多配置文件,甚至可能需要考虑自定义脚本!这方面分为三部分 —— Zabbix 服务器、Zabbix 前端,以及 Zabbix 附加组件。它们都有自己的一组配置文件和位置(用于存储自定义脚本)。

►Zabbix 前端位置和配置文件可能会有所不同,这取决于具体安装方式,因为我们有一些不同的安装方式选择。比如运行的是 Apache 还是 Nginx?运行在什么 Linux 发行版上?在进行配置备份时,必须考虑所有这些因素。通常,配置文件所在的位置如下:

/etc/nginx/
/etc/httpd/
/etc/apache2
►还有一个指向 Zabbix 前端配置文件的符号链接,该文件位于 /etc/zabbix/ 中,我们稍后再介绍该文件。

►然后是 Zabbix 服务器本身,它把配置文件保存在 /etc/zabbix/ 中,如果我们遵循最佳实践,任何脚本都应该放在 /usr/lib/zabbix 中。所以,我们还需要备份以下目录:

/etc/zabbix/
/usr/lib/zabbix
►让我们将它们添加到列表中,并找到备份这些文件的方法。crontab 是我们可以使用的内置工具,但肯定还有其它(也许更好)的解决方案。

►让我们将以下内容添加到 cron 中:
在这里插入图片描述

►在这里还添加了一个 find 命令,它将查找超过180天的文件,并将其从 /mnt/backup/config_files/ 中删除。确保选择一个好的(也可以是网络共享)位置来保存这些文件,因为保证这些文件的安全很重要。当然我们也可以根据需要更改保存这些文件的天数。

►Zabbix 代理、Zabbix Java 网关和 Zabbix web service(用于 PDF 报告)等其它组件呢?。它们也有配置文件。确保在运行这些附加组件的主机设备上运行备份。

►对于 Zabbix 代理,它们的配置文件位置与 Zabbix 服务器的相同:
在这里插入图片描述

►对于 Zabbix Java 网关和 Zabbix web service,我们可以省略 /usr/lib/zabbix/ 文件夹。

不要忘记导入/导出文件

►一般来说,数据库备份很慢,恢复也很慢,除非我们不备份 history/trends 表中的数据。然而即便如此,仅仅因为某人在单个模板上配置出错而恢复整个数据库也是一件麻烦事。Zabbix 自带内置的前端导出功能,允许我们立即导出(然后导入)整个前端配置。我们也可以单独备份以下这些前端配置中的一部分:

Hosts
Templates
Media types
Maps
images
Host groups (只能通过 API 实现)
Template groups (只能通过 API 实现)
►所有这些前端配置都可以通过 Zabbix API 获得,从而允许我们选择是在前端页面进行手动备份,还是使用 API 实现自动化操作。如果编写了相关脚本,我们甚至可以完全通过 git 来管理和更新 Zabbix 配置。

前 端 备 份

►要从前端页面导出配置,只需要跳转到受支持的页面(比如配置 -> 模板),然后选择导出数据格式。如果选择了多个配置时,请注意它们都将被导出并保存到同一个文件中。

在这里插入图片描述

►然后,我们可以编辑这些文件并从前端页面重新导入:
在这里插入图片描述

►对于模板,会弹出一个漂亮的差异比较窗口,详细说明模板的所有更改、删除和新增内容:
在这里插入图片描述

API 备份

►对于 API,由于我们需要从多种方式中选择其中的一种来执行,事情会变得更加复杂。当然,可以从 CLI 执行 curl 命令,甚至可以使用 Postman:

►请求正文
在这里插入图片描述

►响应将如下所示
在这里插入图片描述

►不过一旦我们将其与自动化脚本相结合,这个特性就真正开始发挥威力。请妥当地使用它!

高 可 用

►高可用呢?它是不是某种形式的备份?

►是,也不是。高可用不是确保我们可以用来恢复被损坏的东西的“IT 备份”。但它是另一种形式的备份,即如果 Zabbix 服务器的一个实例发生故障,另一个实例将接管代替它。HA 在本文中有些超出范围,但仍值得一提。有几种解决方案可以将 Zabbix 设置为一个完整的高可用集群。对于 MySQL 我们可以使用 Primary/Primary 设置,对于前端我们可以使用 HAProxy 等负载平衡技术,对于 Zabbix 服务器,我们可以使用内置的高可用方法。将所有这些结合在一起,一定能够满足每一个生产环境的需求。

结 论

►总之,有许多方式可以备份 Zabbix 环境。这一切都是从数据库开始的,这些备份对于在发生灾难时确保安全至关重要。进行备份时,不要忘记配置文件和自定义脚本以及前端的备份。结合所有这些解决方案将保护我们的 Zabbix 监控环境,如果这些还不够,请不要忘记快照等方案。甚至可以在多个层面上综合使用以进一步保护我们 Zabbix 监控环境。

2023Zabbix官方培训行程

短时间系统掌握Zabbix!

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/195718.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mysql关系型数据库免安装包下载以及安装教程

对于大部分技算计技术相关的初学者而言,mysql关系型数据库无可厚非是最适合初学者学习使用的,但是对于安装mysql数据库来说可能就不是特别明确,到底如何安装。互联网上比较多都是官网的.msi安装包,自带mysql客户端和一些其他关联程…

2023年“华数杯”国际大学生数学建模A题赛题发布

MCM问题一:雅鲁藏布江综合发展规划背景雅鲁藏布江是中国最长的高原河流,也是世界上最高的高原河流之一。它起源 于喜马拉雅山脉的北部山麓,从西向东流,然后转向南部,流向印度。中国的雅鲁 藏布江全长2057公里&#xff…

诺依集成mybatis换成mybatis-plus(完美解决)

总结分析:问题1:mybatis与mybatis-plus能否共存?经过将近一天的搜索发现,mybatis与mybatis-plus的sql工厂不通,mybatis是SqlSessionFactoryBean,而mybatis-plus是MybatisSqlSessionFactoryBean,…

python下载油管、B站视频的方法

这是2023年的第一篇博客。但绝不是最后一篇。 今天的博客记录篇娱乐向。 今夜想让wh听我听的歌。 利用python的you-get实现听歌自由。(虽然有音乐会员) FFmpeg的下载与安装。 FFmpeg的下载地址 选择对应型号的操作系统。 本次演示采用windows操作系统…

ChatGPT的调用API被提前发现了?

前言 近日,有消息称ChatGPT的API已经被提前发现。作为一名技术爱好者,我决定亲自试试看。经过几次尝试,我发现这确实是真的!(不过OpenAI确实动作很快,如今已经修补了大部分的模型)。 1. 如何调…

使用 4EVERLAND 将您的 Damus 配置文件存储到 IPFS/Arweave

真正控制您的社交网络! 挑战Twitter的去中心化社交应用Damus已登陆App Store。它是第一个使用名为Nostr的开放式去中心化社交网络协议的移动应用程序,该协议由 Twitter 联合创始人 Jack Dorsey 资助,该协议基于加密密钥对。 Damus 的出现是…

001. SQL慢查询排查(字段类型不一致)

目录一:背景二:排查过程2.1: SQL慢查询定位2.2: Python层面分析将String翻译成Int类型的原因2.3: Python进行SQL执行时间检测出现的问题三:总结一:背景 新的业务上线后, 合作部门发现我们引擎执行完, 回调…

从用户到专家-Zabbix培训【优惠】通道开启

Q:我从2.0开始使用Zabbix,还用得着参加培训? A:相信我,多得是你不知道的事! Zabbix与时俱进,6.0新增了很多功能,如何快速系统掌握? 培训内容是Zabbix原厂设计的系统课…

自学软件测试从哪里开始?给还在迷茫的人一条出路

这两天和朋友谈到软件测试的发展,其实软件测试已经在不知不觉中发生了非常大的改变,前几年的软件测试行业还是一个风口,随着不断地转行人员以及毕业的大学生疯狂地涌入软件测试行业,目前软件测试行业“缺口”已经基本饱和。当然&a…

JVM的垃圾回收机制GC

GC回收区域GC主要针对堆区回收,回收是以对象为单位。方法区的类对象加载后不太需要回收;栈区的释放时机确定,不必回收;程序计数器是固定内存地址,不必回收。找出垃圾的方法引用计数法(jvm未采取&#xff09…

SAP 编号范围及BUFFER缓冲

一 前言 编号范围对象(NUMBER RANGE)是SAP ERP 软件中的一个重要概念. 主要用来获取流水号. 在标准功能及自开发功能中大量使用.系统中的几乎所有对象的号码都是通过编号范围对象获取的. 二 编号范围对象的创建 事务代码SNRO 用于创建编号范围对象 三 编号范围对象的配置…

几个关键字(final、static、权限修饰符、super、this、instanceof)

Java知识点总结:想看的可以从这里进入 目录5、关键字5.1、final5.2、static5.3、 权限修饰符5.4、 super、this5.5、instanceof5、关键字 5.1、final 1、final:最终的。 修饰局部变量时赋值后不可改,修饰成员变量时必须赋初值且不可改&#x…

基于AST的babel库实现js反混淆还原基础案例荟萃

基本概念 AST简介 AST全称Abstract Syntax Tree,即抽象语法树,简称语法树(Syntax tree),树上的每个节点都表示源代码中的一种结构。 JavaScript 领域常用的 AST 解析库有 babel、esprima、espree 和 acorn 等&#…

【2023】Prometheus-先搭出来玩玩

找两台还没回收的服务器(虚拟机),使用centos7.*系统 一台作为监控端,一台作为被监控端。目录1.快速部署Prometheus服务2.快速部署被监控端加入监控端3.使用grafana作为UI展示4.导入node_exporter模板监控node节点1.快速部署Promet…

【nodejs】脚手架从零开始搭建JBD

🛎️脚手架编写 脚手架框架: bin www.js src contant.js create.js main.js package-lock.json package.json 🛠️插件安装 devDependencies & dependencies 脚本名称脚本作用commander读取版本,设定选项&#xff…

混合人机协同制造系统设计与控制中的运营管理问题:一项调查

S. Ehsan Hashemi-Petroodi , Simon Thevenin , Sergey Kovalev , Alexandre Dolgui 小于翻译摘要:能够执行多种任务的制造系统需要不同类型的资源。使用机器人的全自动系统具有高速、准确、不知疲倦和力量,但它们很昂贵。另一方面,人类工作者…

【Redis】快速入门使用

文章目录Redis初识NosqlRedis安装依赖库上传安装包并解压启动Redis桌面客户端Redis常见命令Redis通用命令String类型String的常见命令Key结构Hash类型List类型Set类型SortedSet类型Redis的Java客户端Jedis客户端快速入门连接池SpringDataRedis客户端快速入门自定义序列化String…

无法通过SSH远程登录Linux实例时的排查指引-阿里云国际

本文介绍在使用阿里云国际版云服务器实例时,通过SSH远程登录Linux系统的ECS实例时,连接失败,无法正常登录Linux实例的排查指引: SSH登录失败时没有明确的报错信息 处理流程 如果没有收到系统返回的报错信息,请根据以下…

多级缓存架构 | 黑马Redis高级篇

目录 一、多级缓存介绍 1、传统缓存的问题 2、多级缓存方案 二、JVM进程缓存 1、初始Caffeine 缓存分类 Caffeine入门 2、实现进程缓存 三、Lua脚本 1、初始Lua 2、Lua语法 数据类型 变量 循环 ​编辑 函数 条件控制 四、OpenResty 1、初始OpenResty 2、Open…

Java 定时任务详解

文章目录单机定时任务技术选型TimerScheduledExecutorServiceSpring Task时间轮分布式定时任务技术选型QuartzElastic-JobXXL-JOB单机定时任务技术选型 Timer java.util.Timer是 JDK 1.3 开始就已经支持的一种定时任务的实现方式。 Timer 内部使用一个叫做 TaskQueue 的类存…