Jenkins配置插件
RabbitMQ的消息模式
前言
交换机(Exchange)为rabbitmq
独特的概念,用到的最常见的是4中类型:
- Direct: 先匹配, 再投送。即在绑定时设定一个routing_key, 消息的routing_key匹配时, 才会被交换器投送到绑定的队列中去. 交换机跟队列必须是精确的对应关系,这种最为简单。
- Topic: 转发消息主要是根据通配符。在这种交换机下,队列和交换机的绑定会定义一种路由模式,那么,通配符就要在这种路由模式和路由键之间匹配后交换机才能转发消息 这种可以认为是Direct 的灵活版
- Headers: 也是根据规则匹配, 相较于 direct 和 topic 固定地使用 routingkey , headers则是一个自定义匹配规则的类型, 在队列与交换器绑定时会设定一组键值对规则,消息中也包括一组键值对( headers属性),当这些键值对有一对或全部匹配时,消息被投送到对应队列
- Fanout : 消息广播模式,不管路由键或者是路由模式,会把消息发给绑定给它的全部队列,如果配置了routingkey会被忽略
案例
topic
集群环境样例,同队列
发送端:topic=a.topic
接收端A: queue_a_1 routingKey=a.topic.routing
接收端B: queue_a_1 routingKey=a.topic.routing
发送端发送数据:C
接收端A、B: queue_a_1 任意端收到 C
集群环境样例,不同队列
发送端:topic=a.topic
接收端A: queue_a_1 routingKey=a.topic.routing
接收端B: queue_a_1 routingKey=a.topic.routing
接收端C: queue_a_2 routingKey=a.topic.routing
发送端发送数据:C
接收端A、B: queue_a_1 任意端收到 C
接收端C: queue_a_2 收到 C
集群环境样例,不同队列2
发送端:topic=a.topic
接收端A: queue_a_1 routingKey=a.topic.routing
接收端B: queue_a_1 routingKey=a.topic.routing
接收端C: queue_a_2 routingKey=a.topic.routing
接收端D: queue_a_2 routingKey=a.topic.#
接收端E: queue_a_2 routingKey=a.topic.#
发送端发送数据:C
接收端A、B: queue_a_1 任意端收到 C
接收端C、D、E: queue_a_2 任意端收到 C
Linux的图形化配置笔记本盒盖不休眠
PVE8中的MacOS系统优化
配置中文
setting -> 搜索 Language & Region -> 添加中文 -> TranslationLanguages -> Chinese Download -> 并将简体中文移动到第一个
重启
引导优化
1 | diskutil list |
disk0 虚拟硬盘
disk1 Opencore 镜像盘
disk2 是系统盘
现在要把 disk1s1 覆盖 disk0s1
1 | sudo dd if=/dev/disk1s1 of=/dev/disk0s1 |
关机,分离 OpenCore,启动
开机自启
必须要做 引导优化
下载 https://github.com/corpnewt/ProperTree
安装 python3
运行 propertree/buildapp-select.command
选择 /Library/Frameworks/Python.framework/Versions/3.12/bin/python3
加载引导
1 | sudo diskutil mount disk0s1 |
打开访达的位置-> EFI/OC/config.plist
cmd +f 搜索 showpicker ,选项改为 False,cmd +s 保存
重启,就可以自动重启了
使用 U盘
使用USB端口,选择U盘的端口,下次再次插入 U 盘、硬盘,键盘都可以直通。
USB2.0 与 USB2.0 是不同的端口,所以同一个接口需要配置两次才可以兼容 USB2.0 和 USB3.0
开启 VNC 登录
setting -> sharing -> Screen Sharing -> + -> 选择当前账号
开启 SSH 登录
setting -> sharing -> Remote Login -> + -> 选择当前账号
显卡直通
NVRAM-boot-args
改为 keepsyms=1 -v agdpmod=pikera
PVE8安装MacOS
下载镜像
https://github.com/thenickdude/KVM-Opencore/releases
下载 OpenCore-v20.iso.gz
找到最新的就可以
创建 MacOS镜像
Ubuntu
系统下
打包
好用
1 | cd ~/ |
弃用
1 | cd ~/ |
iso上传 pve
将
Monterey-recovery.img
OpenCore-v20.iso
上传到 pve ISO
镜像中
这里有 2023-11-25下载的版本:
修改 vm.conf
这里VM 的id 为 1000
1 | vim /etc/pve/qemu-server/1000.conf |
在第二行添加参数(intel
的处理器)
1 | args: -device isa-applesmc,osk="ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc" -smbios type=2 -device usb-kbd,bus=ehci.0,port=2 -global nec-usb-xhci.msi=off -cpu host,kvm=on,vendor=GenuineIntel,+kvm_pv_unhalt,+kvm_pv_eoi,+hypervisor,+invtsc |
将两个ISO
的配置修改:
1 | media=cdrom 改为 cache=unsafe |
结果如下:
配置 VM
这里 VM ID 设置为 1000
启动系统
选第一个按回车就可以了
配置磁盘
结束后左上角叉掉
- Agree
- Agree
- 选择硬盘 maxmac
等待重启
- 第一次选择 install
- 第二次选择 install
- 第三次选择 maxmac
- 第四次选择 maxmac
启动后选择 China
Migration Assistant 选择 Not Now
时区选择shanghai
下一步优化 MacOS
修改时间
1 | date -v+8H "+%m%d%H%M%S" | xargs date |
Filebeat-8.x+Logstash采集log4j2日志
版本:
默认安装路径
/opt/logstash
、/opt/filebeat
Logstash
配置
测试接收 filebeat
新建文件 config/first-pipeline.conf
1 | input { |
测试
1 | bin/logstash -f first-pipeline.conf --config.test_and_exit |
启动
1 | # 自动更新 --config.reload.automatic |
Filebeat
配置
Filebeat.yml
1 | filebeat.inputs: |
启动
1 | filebeat -c filebeat.yml -e |
附
grok
解析日志
新版本的 logstash
自带 grok
插件
环境信息:
- 部署路径:/opt/logstash
- Log4j2
对接方式:Socket
- 部署地址:192.168.2.8
- logstash
建议使用 grok
插件
grok
是一个十分强大的logstash filter
插件,他可以通过正则解析任意文本,将非结构化日志数据解析成结构化和方便查询的结构。
在线测试 官方pattern
插件安装
安装插件
1 | # 查看已安装 |
离线安装
1
2
3
4
5
6
7 mkdir /opt/logstash/plugins
cd /opt/logstash/plugins
wget https://github.com/logstash-plugins/logstash-filter-grok/archive/refs/tags/v4.4.3.tar.gz
tar -zxvf v4.4.2.tar.gz
vim /opt/logstash/Gemfile
# 写入
# gem "logstash-filter-grok", :path => "path"在线安装
1
2 bin/logstash-plugin install logstash-filter-grok
bin/logstash-plugin update logstash-filter-grok
部分 grok
表达式
1 | USERNAME [a-zA-Z0-9._-]+ |
部分 grok java
表达式
1 | JAVACLASS (?:[a-zA-Z$_][a-zA-Z$_0-9]*\.)*[a-zA-Z$_][a-zA-Z$_0-9]* |
Filebeat-8.11配置采集log4j2日志
这里先将日志直接通过 filebeat
输出到文件用于测试
log4j2配置日志输出
1 | %d{yyyyMMddHHmmssSSS}:%p [%T] [${pn}] [%X{cId}] [%X{cpId}] [%X{rTId}] %c{1.}(%L): %m%xwEx%n |
%X{cId}
在java 中可以使用ThreadContext.put("cId","test")
实现
filebeat.yml
配置
这里输出到日志文件测试
1 | filebeat.inputs: |
Logstash-8.x配置多个pipelines
PVE8安装win11
virtio-win-0.1.229.iso
Win11_23H2_Chinese_Simplified_x64.iso
上传镜像
local -> ISO 镜像
创建虚拟机
操作系统选择 Microsoft Windows
机型 q35
SCSI VirtIO SCSI single
BIOS OVMF (UEFI)
添加 TMP
格式 QEMU映像格式 (qcow2)
磁盘:
总线 SCSI
缓存 Write back (不安全)
格式 QEMU映像格式 (qcow2)
SSD 仿真 勾选
CPU:
类别 host
添加ISO
添加 CD
IDE
virtio-win-0.1.229.iso
选项启动顺序
scsi0 ide0 ide2 不能使用 ide1
跳过登录
shift + F10
oobe\bypassnro
win11激活
windows11激活
powershell
irm https://massgrave.dev/get | iex
选 1
离线的可以下载 MAS https://link.zhihu.com/?target=https%3A//github.com/massgravel/Microsoft-Activation-Scripts
安装驱动
virtio-win-0.1.229.iso
中的 virtio-gt-6x