Zabbix监控系统详解及配置
前言
作为一个运维,需要会使用监控系统查看服务器状态以及网站流量指标,利用监控系统的数据去了解上线发布的结果,和网站的健康状态。利用一个优秀的监控软件,我们可以:
- 通过一个友好的界面进行浏览整个网站所有的服务器状态;
- 可以在web前端方便的查看监控数据;
- 可以回溯寻找事故发生时系统的问题和报警情况。
目录
一、zabbix概述
1.zabbix是什么?
2.zabbix监控原理
3.监控对象
(1)zabbix server
(2)zabbix agent
(3)zabbix proxy
(4)zabbix get
(5)zabbix sender
二、部署zabbix服务端
三、部署 zabbix 客户端
四、监控模板
1.使用官方或已开发设计好的模板
2.自定义监控模板
(1)监控客户端主机登录人数
(2)监控nginx客户端状态信息
五、配置zabbix报警
1.设置报警媒介
2.在用户设置中指定报警媒介
3.指定报警的监控触发器
4.测试报警
六、配置zabbix服务端自动发现与自动注册
1.自动发现
编辑
2.自动注册
七、部署zabbix代理服务器
八、SNMP监控
一、zabbix概述
1.zabbix是什么?
zabbix是一个基于 web 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制以让系统管理员快速定位、解决存在的各种问题。
zabbix由两部分构成,zabbix server与可选组件zabbix agent。通过c/s 模式采集数据,通过b/s 模式在web端展示和配置。
zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在Linux等平台上。
zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。
2.zabbix监控原理
zabix agent安装在被监控的主机上,zabiboix agent负责定期收集客户端本地各项数据,并发送至zabbix server端,zabbix server收到数据后,将数据存储到数据库中,用户基于Zabbix WEB可以看到数据在前端展现图像。当zabbix监控某个具体的项目,该项目会设置一个触发器阈值,当被监控的指标超过该触发器设定的阈值,会进行一些必要的动作,动作包括发送信息(邮件、微信、短信)、发送命令( shell命令、reboot、restart、install等)。
3.监控对象
zabbix 监控部署在系统中,包含常见的五个程序:zabbix_server、zabix_agent、zabbix proxy、zabbix_get、zabix_sender等。
(1)zabbix server
zabbix服务端守护进程,其中 zabbix_agent、zabbix_get、zabbix_sender、zabbix _proxy的数据最终都提交给zabbix server;
(2)zabbix agent
客户端守护进程,负责收集客户端数据,例如:收集CPU负载、内存、硬盘使用情况等;
(3)zabbix proxy
zabbix分布式代理守护进程,通常大于500台主机,需要进行分布式监控架构部署;
(4)zabbix get
zabbix 数据接收工具,单独使用的命令,通常在server或者 proxy端执行获取远程客户端信息的命令;
(5)zabbix sender
zabbix数据发送工具,用户发送数据给 server或 proxy端,通常用户耗时比较长的检查。
二、部署zabbix服务端
zabbix 服务端 zabbix_server 默认使用 10051 端口
zabbix_server:192.168.116.60(内存至少 2G,推荐 4G)
1.关闭防火墙和selinux,设置服务器名称,同步时间
systemctl disable --now firewalld
setenforce 0
hostnamectl set-hostname zbx-server
su
ntpdate ntp.aliyun.com
2.下载zabbix和相关软件
#获取 zabbix 的下载源
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
#更换 zabbix.repo 为阿里源
cd /etc/yum.repos.d
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' zabbix.repoyum clean all && yum makecache
yum install -y zabbix-server-mysql zabbix-agent#安装SCL(Software Collections),便于后续安装高版本的 php,默认 yum 安装的 php 版本为 5.4,版本过低,zabbix 5.0 版本对 php 版本最低要 7.2.0 版本。SCL 可以使得在同一台机器上使用多个版本的软件,而又不会影响整个系统的依赖环境。软件包会安装在 /etc/opt/rh/ 目录下。
yum install -y centos-release-scl
还需要修改一下zabbix源,开启前端环境下载
#安装前端环境
yum install -y zabbix-web-mysql-scl zabbix-apache-conf-scl#安装 zabbix 所需的数据库
yum install -y mariadb-server mariadb
systemctl enable --now mariadb#初始化数据库
mysql_secure_installation
#导入数据库信息
zcat /usr/share/doc/zabbix-server-mysql-5.0.15/create.sql.gz | mysql -uroot -pabc123 zabbix
3.修改 zabbix server 配置文件,修改数据库的密码
vim /etc/zabbix/zabbix_server.conf
......
DBPassword=zabbix #124行,指定 zabbix 数据库的密码
4. 修改 zabbix 的 php 配置文件
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
......
php_value[date.timezone] = Asia/Shanghai #24行,取消注释,修改时区
5.启动 zabbix 相关服务
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
6.浏览器访问zabbix:http://192.168.116.60/zabbix
可以点击主机查看图形化数据,但会出现中文乱码,需要导入字符集
#解决 zabbix-server Web页面中文乱码问题
yum install -y wqy-microhei-fonts
\cp -f /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf
三、部署 zabbix 客户端
zabbix 5.0 版本采用 golang 语言开发的新版本客户端 agent2 。
客户端 zabbix_agent2 默认使用 10050 端口。zabbix_agent01:192.168.116.70
1. 关闭防火墙和selinux,设置服务器名称,同步时间
systemctl disable --now firewalld
setenforce 0
hostnamectl set-hostname zbx-agent01
su
ntpdate ntp.aliyun.com
2.下载zabbix客户端
#设置 zabbix 的下载源,安装 zabbix-agent2
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm cd /etc/yum.repos.d
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repoyum install -y zabbix-agent2
3.修改客户端配置文件并开启
#修改 agent2 配置文件
vim /etc/zabbix/zabbix_agent2.conf
......
Server=192.168.116.60 #80行,指定 zabbix 服务端的 IP 地址
ServerActive=192.168.116.60 #120行,指定 zabbix 服务端的 IP 地址
Hostname=zbx-agent01 #131行,指定当前 zabbix 客户端的主机名#开启服务
systemctl enable --now zabbix-agent2.service
4.在服务端验证zabbix-agent2 的连通性
#安装 zabbix 主动获取数据的命令
yum install -y zabbix-get #测试
zabbix_get -s '192.168.116.70' -p 10050 -k 'agent.ping'
zabbix_get -s '192.168.116.70' -p 10050 -k 'system.hostname'
5.新建客户端
四、监控模板
1.使用官方或已开发设计好的模板
Browse Zabbix / Zabbix - ZABBIX GIT
Zabbix searcher - 900+ Zabbix projects: templates, scripts, integrations, ...
Zabbix community templates
2.自定义监控模板
(1)监控客户端主机登录人数
首先再客户端自定义键(这里演示的用于监控主机登录人数,阈值为3,大于3报警)
在/etc/zabbix/zabbix_agent2.d/下新建.conf文件,在里面自定义键,格式为
UserParameter=<key>,<commend>
之后重启服务读取文件配置 systemctl restart zabbix-agent2.service
可以在服务端使用命令进行测试(当前登录数为4)
测试无误就可以添加自定义模板了
创建好模板,找到并进行配置
创建配置应用集
创建配置触发器
创建配置图形
将模板添加到客户端中
查看图形(监控到了登录人数)
(2)监控nginx客户端状态信息
客户端安装nginx,模拟监控nginx服务器
vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1yum install nginx -y
修改nginx配置文件/etc/nginx/conf.d/default.conf,打开状态统计
重启服务,查看状态统计页面
systemctl start nginx
curl -s 127.0.0.1/status
编写监控nginx状态信息脚本,获取以上值,并给执行权限
#/bin/bash
#Description:Automated monitoring nginx performance and process nginx_status scripts
HOST="localhost"
PORT=80
URL="status"
NGINX_COMMAND=$1
#检查nginx状态
nginx_check() {if [ -f /sbin/pidof ]; then/sbin/pidof nginx | wc -welseps aux | grep -v "grep" | grep -c "nginx:"fi
}
#nginx状态相关信息的值
nginx_active(){/usr/bin/curl -s "http://$HOST:$PORT/${URL}/" 2> /dev/null | awk '/Active/ {print $NF}'
}nginx_reading(){/usr/bin/curl -s "http://$HOST:$PORT/${URL}/" 2> /dev/null | awk '/Reading/ {print $2}'
}nginx_writing(){/usr/bin/curl -s "http://$HOST:$PORT/${URL}/" 2> /dev/null | awk '/Writing/ {print $4}'
}nginx_waiting(){/usr/bin/curl -s "http://$HOST:$PORT/${URL}/" 2> /dev/null | awk '/Waiting/ {print $6}'
}nginx_accepts(){/usr/bin/curl -s "http://$HOST:$PORT/${URL}/" 2> /dev/null | awk 'NR==3 {print $1}'
}nginx_handled(){/usr/bin/curl -s "http://$HOST:$PORT/${URL}/" 2> /dev/null | awk 'NR==3 {print $2}'
}nginx_requests(){/usr/bin/curl -s "http://$HOST:$PORT/${URL}/" 2> /dev/null | awk 'NR==3 {print $3}'
}
#命令获取对应值
case $NGINX_COMMAND incheck)nginx_check;;active)nginx_active;;reading)nginx_reading;;writing)nginx_writing;;waiting)nginx_waiting;;accepts)nginx_accepts;;handled)nginx_handled;;requests)nginx_requests;;*)echo $"USAGE:$0 {check|active|reading|writing|waiting|accepts|handled|requests}"
esac
脚本测试无误
自定义监控变量,用于模板使用
UserParameter=nginx.status[*],/etc/zabbix/zabbix_shell/zabbix_nginx.sh $1
#[*] 代表自定义变量nginx.status传入的值
#$1 代表前面变量传入的值作为此脚本执行的参数,获取对应状态值
重启服务systemctl restart zabbix-agent2.service,在服务端进行测试
测试无误,去前端自定义模板
五、配置zabbix报警
1.设置报警媒介
可以进行测试
2.在用户设置中指定报警媒介
3.指定报警的监控触发器
4.测试报警
我们之前设置的报警触发器有一条是,当nginx进程为0,触发报警,所有我们可以模拟关闭nginx,看看是否能通过设置的报警媒介,收到zabbix的报警。
当我们恢复这个问题,此问题便会消失
六、配置zabbix服务端自动发现与自动注册
1.自动发现
zabbix 自动发现(对于 agent2 是被动模式)是zabbix server 主动的去发现所有的客户端,然后将客户端的信息登记在服务端上。缺点是如果定义的网段中的主机数量多,zabbix server 登记耗时较久,且压力会较大。
首先添加一台客户端,安装好zabbix-agent2服务,修改配置文件指定服务端地址和客户端名称,然后开启服务
服务端和客户端都需要配置彼此的域名解析
2.自动注册
zabbix 自动注册(对于 agent2 是主动模式),zabbix agent2 会主动上报自己的信息,发给 zabbix server。缺点是可能因为配置文件配置错误或者网络不通等原因导致 zabbix agent2 可能找不到 zabbix server。
先禁用自动发现,删除客户端02,做自动注册
在客户端配置文件开启自动注册,然后重启服务
添加自动注册动作
七、部署zabbix代理服务器
配置zabbix代理,分担 server 的集中式压力,解决多机房之间的网络延时问题。
首先关闭防火墙,修改主机名,安装代理
systemctl disable --now firewalld
setenforce 0
hostnamectl set-hostname zbx-proxyrpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
cd /etc/yum.repos.d
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repoyum install -y zabbix-proxy-mysql zabbix-get
安装代理所需数据库,做初始化,密码设的是123123
yum install -y mariadb-server mariadb
systemctl enable --now mariadb
mysql_secure_installation
添加数据库和用户,授权,导入数据库表信息
mysql -uroot -p123123
CREATE DATABASE zabbix_proxy character set utf8 collate utf8_bin;
GRANT all ON zabbix_proxy.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix';
flush privileges;
quit
#退出后导入表数据
zcat /usr/share/doc/zabbix-proxy-mysql-5.0.29/schema.sql.gz | mysql -uroot -p123123 zabbix_proxy
修改代理配置文件,然后启动服务
vim /etc/zabbix/zabbix_proxy.conf
Server=192.168.116.60 #30行,指定 zabbix 服务端的 IP 地址
Hostname=zbx-proxy #49行,指定当前 zabbix 代理服务器的主机名
DBPassword=zabbix #196行,指定当前数据库 zabbix 用户的密码systemctl start zabbix-proxy
修改agent 指向代理的地址
vim /etc/zabbix/zabbix_agent2.conf
......
Server=192.168.116.40 #80行,指定 zabbix 代理服务器的 IP 地址
ServerActive=192.168.116.40 #120行,指定 zabbix 代理服务器的 IP 地址
还需要在每台主机添加域名解析
之后去服务端指定代理
创建客户端时添加代理
之后依次重启server、proxy、client 服务
等待客户端全部亮起即可
八、SNMP监控
使用SNMP简单网络管理协议,对网络中的资源进行管理和实时监控。
首先在需要监控的路由器、交换机上安装snmp(这里以server本机为例)
yum install -y net-snmp net-snmp-utils.x86_64systemctl start snmpd.service
然后去前端修改使用snmp
相关文章:

Zabbix监控系统详解及配置
前言 作为一个运维,需要会使用监控系统查看服务器状态以及网站流量指标,利用监控系统的数据去了解上线发布的结果,和网站的健康状态。利用一个优秀的监控软件,我们可以: 通过一个友好的界面进行浏览整个网站所有的服务…...

【100天精通python】Day29:文件与IO操作_XML文件处理
目录 专栏导读 一、XML文件概述 1. 标签和元素 2. 嵌套结构 3. 属性 4. 命名空间 5. CDATA节 6. 注释 7. 验证与验证语言 8. 扩展性 二、XML文件处理常见操作 1. 解析XML文件 2. 创建和编辑XML文件 3. 修改XML文件 4. 查询XML元素 5 遍历XML元素 6. 删除XML元…...

人工智能的未来:探索下一代生成模型
推荐:使用 NSDT场景编辑器 助你快速搭建可编辑的3D应用场景 生成式 AI 目前能够做什么,以及探索下一波生成式 AI 模型需要克服的当前挑战? 如果你跟上科技世界的步伐,你就会知道生成式人工智能是最热门的话题。我们听到了很多关于…...

C++ 运算符重载为非成员函数
运算符也可与重载为非成员函数。这时运算所需要的操作数都需要通过函数的形参表来传递,在形参表中形参从左到右的顺序就是运算符操作数的顺序。如果需要访问运算符参数对象的私有成员,可以将该函数声明为友元函数。 【提示】不用机械地将重载运算符的非…...

[国产MCU]-BL602开发实例-定时器
定时器 文章目录 定时器1、BL602定时器介绍2、定时器驱动API介绍3、定时器使用实例3.1 单次计时3.2 持续计时通用定时器,用于定时,当时间到达我们所设置的定时时间会产生定时中断,可以用来完成定时任务。本文将详细介绍如何使用BL602的定时器功能。 1、BL602定时器介绍 BL6…...

re学习(29)攻防世界-CatFly(复原反汇编)
因为这是一个.dll文件,在Linux上运行一下: 找到主要函数:(以及由上面三部分对应的代码部分) __int64 __fastcall main(int a1, char **a2, char **a3) {size_t v3; // rbx__int16 v5[4]; // [rsp10h] [rbp-4B0h] B…...

Android WIFI-概率性不能自连
1.连上wifi时同步保存wifi密码,避免连上wifi后马上断电重启由于密码没保存导致不能自动重连wifi packages/modules/Wifi/service/java/com/android/server/wifi/SupplicantStaIfaceHal.java @@ -66,6 +66,7 @@ import com.android.server.wifi.WifiNative.SupplicantDeathEve…...

用Python批量复制文件,方法有9种,方便快捷
前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 当我们复制一个文件时用复制粘贴就可以了,如果是多个文件呢? 就会很麻烦了! 今天给大家介绍一下用Python批量复制文件,方法有九种!希望对你有帮助 1. Shutil Copy…...

《凤凰架构》第一章——服务架构演进史
前言 刚开始决定弄懂文中所提到的所有东西,就像我写ByteByteGo呢几篇文章一样,把每一句话都弄懂。但是对于《凤凰架构》来说,这有点太费时间了,并且没有必要,有些东西可能永远都不会用到,但文章为了全面的…...

【iPhone】手机还有容量,拍视频却提示 iPhone 储存空间已满
文章目录 前言解决方案 结语 前言 今天在用 iPhone 录像的时候突然提醒我 iPhone储存空间已满 你没有足够的储存空间来录制视频” 可我明明还有 20G 的容量 我非常疑惑,因为我之前还剩1个G都能录像,现在20G反而不行了,于是重启了手机&#…...

pycharm中opencv库导入 cv2. 无函数提示跳出解决方法
pycharm中opencv库导入 cv2. 无函数提示跳出解决方法 1、找到当前解释器安装目录 例如: 2、进入D:\Python37\Lib\site-packages\cv2文件,进入cv2文件夹: 找到cv2.pyd, 把cv2.pyd复制一份,放到上层文件夹下,即site-p…...

week3
题解: 前序遍历性质: 节点按照 [ 根节点 | 左子树 | 右子树 ] 排序。 中序遍历性质: 节点按照 [ 左子树 | 根节点 | 右子树 ] 排序。 通过以上三步,可确定 三个节点 :1.树的根节点、2.左子树根节点、3.右子树根节点。 之后进行…...

LeetCode28.找出字符串中第一个匹配项的下标
28.找出字符串中第一个匹配项的下标 目录 28.找出字符串中第一个匹配项的下标题目描述解法一:朴素的模式匹配解法二:KMP算法KMP解决的问题类型最长公共前后缀KMP算法过程next数组的构建代码实现 题目描述 给你两个字符串haystack和needle,请…...

爬虫009_字符串高级_替换_去空格_分割_取长度_统计字符_间隔插入---python工作笔记028
然后再来看字符串的高级操作 取长度 查找字符串下标位置 判断是否以某个字符,开头结尾 计算字符出现次数 替换...

Windows 安装Tensorflow2.1、Pycharm开发环境
文章目录 1、安装anaconda2、安装Tensoflow2.1、创建虚拟环境2.2、安装Tensorflow依赖2.3、验证Tensorflow是否成功 3、配置pycharm环境4、错误记录 1、安装anaconda https://www.anaconda.com/download 打开命令行工具,出现base就表示安装成功了,表示当…...

【javaScript】数组的常用方法(自用记忆版)
目录 一、操作方法 增 push() unshift() splice() concat() 删 pop() shift() splice() slice() 改 splice() 查 indexOf() includes() find() 二、排序方法 reverse() sort() 三、转换方法 join() 四、迭代方法 some() every() forEach…...

全新二开美化版UI好看的社区源码下载/反编译版
2023全新二开美化版UI精美的社区源码下载/反编译版 之前我分享过Rule原版,相信大家已经有很多人搭建好了。这次我要分享的是RuleAPP的二开美化版(请尊重每个作者的版权),这个版本没有加密,可以进行反编译,…...

Docker 发布一个springboot项目
文章目录 1、新建SpringBootDemo项目并打包2、使用Dockerfile打包(基础用法)进一步maven源码打包法 3、更进一步(maven插件打包)docker-maven-pluginspring-boot-maven-plugin前提条件本地环境配置项目环境配置maven插件打包运行校…...

办公信息系统安全基本技术要求
范围 本标准规定了办公信息系统的安全基本技术要求。 本标准适用于指导党政部门的办公信息系统建设,包括在系统设计、产品采购、系统集成等方面应遵循的基本原则,以及应满足的基本技术要求。涉密办公信息系统的建设管理应依据相关国家保密法规和标准要…...

有效管理IT问题的5个原则
问题管理就是发现未知的、隐藏的问题,这是根本原因, 这是您 IT 帮助台无穷无尽的工单来源。当您实施有效的 问题管理,您的 IT 团队可以超越消防模式,专注于战略 IT 目标。以下是可以帮助您实现一流问题管理的五个原则:…...

【MongoDB】解决ProxmoxVE下CentOS7虚拟机安装MongoDB6后启动失败的问题
目录 安装步骤: 2.1 配置yum源 2.2 安装MongoDB 2.3 启 动MongoDB ProxmoxVE上新装的CentOS7.4虚拟机,安装MongoDB6。 安装步骤: 2.1 配置yum源 # 创建mongodb yum源(https://www.mongodb.co...

MySQL 事务原理:事务概述、隔离级别、MVCC
文章目录 一、事务1.1 事务概述1.2 事务控制语句1.3 ACID特性 二、隔离级别2.1 隔离级别的分类2.1.1 读未提交(RU)2.1.2 读已提交(RC)2.1.3 可重复读(RR)2.1.4 串行化 2.2 命令2.3 并发读异常2.3.1 脏读2.3…...

useEffect从入门到入土
副作用是相对于纯函数概念来说的, 除事件回调处理副作用,其他副作用尽量放在useEffect中; 组件首次渲染、有依赖项更新(Object.is方法判断)时,该useEffect触发 jsx渲染完成后立马触发useEffectÿ…...

第三章 图论 No.6负环之01分数规划与特殊建图方式
文章目录 裸题:904. 虫洞01分数规划:361. 观光奶牛特殊建图与01分数规划trick:1165. 单词环 裸题:904. 虫洞 904. 虫洞 - AcWing题库 // 虫洞是负权且单向边,道路是正权且双向边,题目较裸,判…...

九、Spring 声明式事务学习总结
文章目录 一、声明式事务1.1 什么是事务1.2 事务的应用场景1.3 事务的特性(ACID)1.4 未使用事务的代码示例1.5 配置 Spring 声明式事务学习总结 一、声明式事务 1.1 什么是事务 把一组业务当成一个业务来做;要么都成功,要么都失败…...

ResNet50卷积神经网络输出数据形参分析-笔记
ResNet50卷积神经网络输出数据形参分析-笔记 ResNet50包含多个模块,其中第2到第5个模块分别包含3、4、6、3个残差块 5049个卷积(3463)*31和一个全连接层 分析结果为: 输入数据形状:[10, 3, 224, 224] 最后输出结果:linear_0 [10,…...

uniapp 微信小程序 封装公共的请求js(api版本)
一、新建api文件夹 在项目目录下创建api文件夹,内放files跟index.js文件夹,files文件夹内放每个页面对应的js请求接口 1、index.js /*** api接口的统一出口*/ const api {}; const requireComponent require.context(./files, false, /\.js$/) requi…...

格式化后数据恢复,教你3个实用方法!
“格式化后数据还能恢复吗?前几天因为我的电脑中了病毒,我不得不将它进行格式化操作。但是我电脑里有很多比较重要的文件,有什么方法可以帮我恢复电脑中的文件吗?求解答!” 格式化是一种比较常见的数据清除方法&#x…...

LaTex使用技巧21:设置中文环境、字体、行间距和页边距
我在Overleaf上编写我的中文LaTex,设置了中文环境,字体、行间距以及页间距,记录一下方便以后查询。 使用中文环境命令为: \usepackage{xeCJK}可以使用Overleaf上支持的中文字体Fonts for CJK Chinese,设置字体的命令…...

【RabbitMQ】golang客户端教程3——发布订阅(使用fanout交换器)
发布订阅 在上一个教程中,我们创建了一个工作队列。工作队列背后的假设是每个任务只传递给一个工人。在这一部分中,我们将做一些完全不同的事情——我们将向多个消费者传递一个消息。这就是所谓的“订阅/发布模式”。 为了说明这种模式,我们…...