扩展!为 Zabbix 增加动环能力 —— 以 Modbus 采集温湿度为例
Zabbix Agent 主机变身 FSU,可以通过 RS485 以 Modbus 协议读取温湿度,充分扩展 Zabbix 的动环监控能力。 工作原理 串口读 Modbus 协议数据,将其写入 Redis 中,Zabbix Server 请求 Zabbix Agent 读 Redis 中数据。引入 Redis 主要为了解耦,避免多个进程同时读串口造成冲突。 这里 Zabbix Agent 作为 Modbus RTU 主站,每个传感器作为一个单独的 Modbus RTU 从站,在一条 485 总线上,站号唯一,所以主站可以通过轮询的方式向从站读取数据。 材料准备硬件准备 树莓派或其他开发板,甚至是 x86 工控机,只要有多路串口就行(我以树莓派 3B+为例) RS485 温湿度模组(我以 2 个模组为例) TTL 转 485 转接板(树莓派默认是 TTL 电平,需要转换成 485 电平) USB 转 485 调试器(主要方便调试) 线缆若干,485 通信线建议为双绞线 软件准备 树莓派系统选择 RPIOS,即为 Debian11 安装 Zabbix Agent 6.0...
将博客迁移到了 COS 上...
之前博客一直是放在 CloudBase 云开发上的。主要用了云开发的静态网站托管和云函数功能。自从评论系统维护之后,云函数也不再使用了。 前几天收到了腾讯云的通知,云开发计费方式调整,将于 8 月后使用“基础套餐 + 按量付费”模式,需先购买带有一定配额的基础套餐,超出配额部分再按使用量付费。 虽然仍然有免费版本,但静态网站托管必须使用按量计费套餐才能使用,换言之,免费用户就不能再使用云开发做静态网站托管了。 在我理解下,CloudBase 是一个能力集合服务,静态网站托管依赖于 COS 和 CDN,云函数依赖于 Serverless,云托管依赖于容器服务。其它服务都可以非常灵活的按量计费的,为什么到云开发这打包之后就有了门槛了。。。 最后决定还是迁移吧。迁到 COS 去。 本次调整 原站迁移到腾讯云 COS 成都节点 全站支持 IPv6 访问 调整了打包流程,增加了对静态网站的制品管理 CODING Jenkinsfile还是放一个 CODING 的...
RouterOS GREv6 实现跨地域快速组网
随着 IPv4 地址紧张,越来越多的运营商已经不对普通用户开放公网 IP 了。很多时候,我们又需要做跨地域的网络互联。除了使用服务器做中转,其实我们还可以把目光聚焦到 IPv6 上,IPv6 原生就为我们提供了端到端的连接,现在很容易就能拿到运营商的 IPv6 地址,也为这个方案的实施提供了必要基础。 今天,我们要聊的是使用 RouterOS 的 GREv6 隧道,进行跨地域组网。 前提 两端都是 RouterOS 设备,建议使用 6.x 版本的 ROS 系统,目前 v7 还是 BUGOS。。。 两端都有 IPv6 地址 拓扑实验拓扑:Cloud 为互联网。 操作方法需要使用 WinBox 连接 ROS。 如图,启用 ROS 的 IPv6 功能。 需要先启用 IPv6 支持,如果没有安装 ipv6 软件包,可以去官网下载导入进行安装。 给 ROS 配一个 IPv6 地址。以我中国移动宽带为例,光猫可以 DHCPv6 下发前缀,我这边起一个 DHCPv6 Client 收一下就好了。操作位置是 IPv6->DHCPv6...
yum update 异常退出后常见报错的解决方法
我们在 yum update 更新异常退出了,例如 Ctrl+C 掉,网络中断等,会有很多软件包留在仓库,引起各种各样的问题。这里简单记录一些常见的问题和解决方法。但温馨提示,最好不要中断 yum update 过程,这十分危险,可能会导致 RPMDB 损坏。 常见问题 Q1:yum update 提示软件已经被安装了,但 rpm -e 却提示仍然未安装 此时可以定位一下引发报错的软件包的名字和版本号,使用 rpm -e –nodeps 来卸载保存的软件包。 Q2: There are unfinished transactions remaining 安装 yum-utils 并使用 yum-complete-transaction 清理未完成事务。 yum install yum-utilsyum clean allyum-complete-transaction –cleanup-only Q3: Package A conflicts with Package B 这个提示是包冲突了,只能使用 rpm 命令手动解除冲突。rpm -e 或者必要时候使用 –nodeps...
openEuler 搭建 SeaTable 小记(2)Runner & FAAS
这是openEuler 搭建 SeaTable 小记(1)的第二篇,主要介绍如何部署 SeaTable Python 运行器。 架构SeaTable 的 Python 脚本运行环境包括 Python Runner 和 SeaTable FAAS Scheduler。 FAAS 是调度器,主要负责调度 SeaTable 运行脚本请求、安排定时任务和保存/统计脚本运行结果等。相当于一个 master 节点。Python Runner 是脚本的执行者,Python Runner 在收到一个脚本运行请求后,会下载脚本内容并启动一个 docker 容器来运行这个脚本。脚本运行结束后,容器自动销毁,以此保证安全性。相当于是一个 worker 节点。 Python Runner 可以和 SeaTable FAAS Scheduler 部署到一台机器上。 准备我准备了一台最小化安装的 OpenEuler 操作系统虚拟机,并安装了 Docker,DockerCompose 以及 Python3(因为 SeaTable Python Runner 依赖 Python3)。 部署...
入了一台 GPD Pocket3
最近入了一台 GPD 的模块电脑,GPD Pocket3,i7-1195G7 版本,16G/1TSSD。 据说这个电脑是的设计定位是专业运维,确实能吸引我的就是原生串口和 KVM 模块了。 8 吋,手写翻转屏幕,带雷电 4 接口,2.5G 以太网接口和 WiFi6,确实不像其他品牌的小电脑,阉割了配置。 转,官网:http://www.softwincn.com/gpdpocket3 上图新旧电脑比较,旧电脑是 DELL 的移动工作站 M6800,一比较就知道 8 吋是真的小。 预装 Win11。 哎,又是一个默认竖屏的机器。 运维神器(不是 真·巴掌大 使用感受1、小巧轻便,性能强大。日常办公娱乐足够用,这点是真的没得说。 2、拓展性能强。雷电 4(兼容 TypeC)扩展,我加了一个拓展坞,双屏 + 一个投影机,工作、投影刷剧切换自如。 3、原生串口,这个兼容性比 USB 转的要强得多,不会因为 USB 串口芯片和设备不兼容捣麻烦。 4、KVM 模块,其实就是个 1080P 的采集卡,不当 KVM 的时候,可以挂个 IPTV 盒子啥的,用 OBS...
“批量请求”导致 Zabbix“Value has unknown type 0x05”
问题引入有一台 Ruijie 的 S2910 交换机在做我 HomeLab 的 TOR。因为 Ruijie 私有 MIB 的原因,Zabbix 这边一直缺一个完整的模板,五一期间抽空完善了一下模板,采集的信息趋于完善。接口自动发现,触发器自动配置,风扇,接口,温度啥的信息终于都全了。 但 Zabbix 在采集数据时,有些监控值会周期性不可用,提示“Value has unknown type 0x05”。日志如下,/var/log/zabbix_server.log。 12345672137444:20220504:232103.943 item "HomeLab-TOR-S2910:net.if.in[ifHCInOctets.15]" became not supported: Value has unknown type 0x052137444:20220504:232103.943 item "HomeLab-TOR-S2910:net.if.out.discards[ifOutDiscards.9]" became not...
GitHub Copilot 初体验
GitHub 去年联合 OpenAI,推出了一款“GitHub Copilot”工具,可以根据上下文自动写代码,将程序员从重复的编写中解放出来。目前正在做技术预览,近期我申请到了 Copilot 的 Technical Preview 资格,就准备迫不及待地去体验一下,看一看到底是智能还是**。 官方网站:https://copilot.github.com/ 官方非常简洁,核心思想就是 Don’t fly solo,希望这个工具能成为程序员的 Copilot(副驾驶)。 体验一把,PHP 环境,例如我直接写中文注释,让他自动生成代码,如果觉得代码没有问题,可以按 TAB 键接受建议。 通过 SQL 直接生成 ORM 代码。 多种解决方案,可自行选择代码。 总体感觉也是挺智能的,甚至能根据前后文自动生成规范的变量名。但是在一些情况下,Copilot 还是出现了生成的代码中有未使用的变量或代码逻辑不正确的情况。当然这可以理解,毕竟作为一个得力助手是完全没问题的。 那如何申请技术预览呢? 打开官网,使用 GitLab 账号登录即可申请资格,一般需要排队,我是用了 3...
Zabbix 企业微信内部应用发送告警
我有一个 Zabbix 是收 HomeLab 告警的,之前注册了一个企业微信拉了个群通过 Bot 去发告警,但是因为工作也是使用企业微信,基本上我都在我的主企业里,企业微信有个特性是不提醒其他企业的具体消息,搞得我上周漏掉了服务器硬盘挂了告警,本来是周四就告警预故障了,结果周六才看到。好在网上能买到备件,周日到货完成了更换,才没有出现两块硬盘接连“寄”掉的事情发生。 从这件事情之后,我就想如何换一种告警渠道,避免看不到告警的情况出现。最后发现可以在企业微信中添加内部应用,结合微信企业号去推送告警。 添加企业微信应用应用管理创建一个应用,并获取到 Secret 和 AgentId。这里的 Secret 对应后面的 Corpsecret。 微信添加微信插件(原企业号)之前以为企业号=企业微信,最近再翻管理后台发现企业号变成了微信插件。我们可以在我的企业->微信插件中获得二维码并关注。 增加报警媒介类型增加一种报警媒介,类型是 WebHook,参数如下填写: 参数 参数说明 值 Agentid 应用的 ID Corpid 企业...
用 Zabbix Debug 工具辅助二次开发
我们在做 Zabbix 二次开发的时候,离不开 Zabbix 的 API 文档,这里会以 Zabbix 6.0 API Documentation 为例子,我们在实现某些复杂的功能时,往往需要调用多个接口,其实 Zabbix WebUI 提供了一个观察 API 调用方式的方法,就是 Debug 模式。在 Debug 模式下,我们可以清楚的看到 Zabbix 的 WebUI 是如何调用 API 为我们展示数据的。 快速开始在 Zabbix 中,Debug 模式是按用户组开启的,我们可以到 管理->用户群组 中针对某个用户组开启 Debug 模式。 当开启 Debug 模式后,在页面的右下角将有“调试”按钮出现。 点击“调试”按钮可以看到详细的请求过程。如下图,是 API 接口的调用情况。 除了 API 接口,我们还能看到 SQL 执行情况,如下图。 调用演示以获取主机列表为例子。 响应如下: