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 执行情况,如下图。  调用演示以获取主机列表为例子。  响应如下:  
使用 API Token 简化 Zabbix API 调用
我们知道 Zabbix 提供了丰富的 API,供二次开发使用,在老版本的 Zabbix 中(Zabbix 5.4 之前),需要我们手工通过user.login方法,使用用户名密码登录从而换取 API Token。而且 API Token 的有效期关联 API 用户的会话时间,当用户退出或超时后,我们需要重新user.login去申请新的 API Token。 从 Zabbix5.4 开始,我们可以直接在管理端申请一个 API Token,在它到期前都可以任意调用,极大方便了后期开发。 申请 Token以 Zabbix6.0 为例,我们可以在管理端的【管理】->【一般】->【API Tokens】中创建一个 Token。  你可以选择,是否需要过期时间。  点击添加,即可获得 API Token,请牢记生成的 API Token,这个 Token 只展示一次,如果你忘记了 API Token,则需要重新生成一个新的。  同样的,生成的 API Token 会关联你选择的用户,你可以通过该用户对 API Token 进行权限控制。 Enjoy :) 
MikroTik 设备如何做抓包和流量记录
RouterOS 为我们提供了一个工具用于抓取设备中的流量数据,可以灵活的过滤接口(子接口)、MAC、协议、甚至是 CPU,并可以生成标准的数据流数据包文件或发送到远端设备,供我们进行分析使用。 工具位置Winbox –> Tools > Packet Sniffer  使用方法当我们配置好过滤器之后,我们有两种方式处理抓到的数据包。 配置过滤器在 Filter 中配置过滤器。你可以对接口、MAC、协议、IP 地址、端口、CPU、目的地址进行过滤,还可以组合过滤项。 保存到文件在 General 中填写 File Name 并指定文件的大小,要注意一下你的设备磁盘有足够的空间存放 pacp。 最好的方法还是将抓取的数据包直接发给第三方设备上。 发送到 WireShark在 Streaming 中添加 Server 和端口,打勾 Streaming Enable 和 Filter Stream,如果不需要流量过滤,则不需要勾选 Filter Stream。 在远端电脑,也就是 Server IP 的电脑,打开 WireShark,选择有线网卡,并添加、启用 udp...
Monit 监控你的 ZabbixServer
Monit 是一个用于管理和监视 Unix 系统的小型开源实用程序。使用 Monit 对进程进行自动维护管理,能在进程出现错误情况下执行有意义的操作。 我们使用 Monit 来监控 ZabbixServer 及其一些依赖的服务,例如 Nginx、MySQL、PHP-FPM。 安装 Monit下载地址:https://mmonit.com/monit/#download 你可以下载已经编译好的二进制包,或自行编译。我的系统环境是 Debian11。 二进制文件放到/usr/bin,配置文件放到/etc,创建一个/etc/monit.d/文件夹,用来存放监控脚本。 配置注册服务:vim /lib/systemd/system/monit.service 123456789101112[Unit]Description=A small Open Source utility for managing and monitoring Unix...
Raspbian 扩容 SWAP 分区的正确姿势
树莓派装好 Raspbian 系统后,默认的 SWAP 分区是 100M,用着用着 ZABBIX 就告警 SWAP 分区不足,网上许多资料都是增加个 SWAP 文件,然后在 fstab 挂盘。其实我们发现在编辑树莓派 fstab 文件的时候,就发现有两句话。 12# a swapfile is not a swap partition, no line here# use dphys-swapfile swap[on|off] for that  这其实已经说明了,官方推荐使用 dphys-swapfile 挂载 SWAP。 编辑配置文件1sudo vim /etc/dphys-swapfile  修改 CONF_SWAPFILE 和 CONF_SWAPSIZE 12CONF_SWAPFILE=/var/swapCONF_SWAPSIZE=2048  一般 SWAP 大小就给 2 倍物理内存就好了。 使 SWAP 生效1systemctl restart dphys-swapfile  划分空间需要一点时间,等他一会,free -h 就可以看到 SWAP 分区已经 2G 了。 
ZABBIX 升级小记(5.0LTSto6.0LTS)
近日 ZABBIX 发布了其 6.0 的 LTS 版本,增强了业务服务监控、数据可视化的能力,也为我们带来了期待很久的 HA、K8S 等新功能。 抽个周末,给自己 HomeLAB 原来的 5.0LTS 升级到 6.0LTS 版本。如果想了解 ZABBIX 新功能,可以转向 6.0 What’s New 了解详情。 我的 ZABBIX 是运行在树莓派 3B+(1G 内存 +64G 存储)上的,能满足我对全家网络设备、服务器以及其他基础设施的监控和管理。其操作系统是 Debian11。  整个升级包含:升级条件判断,备份,升级软件包,验证业务,四个部分。 升级条件判断升级前你需要判断一下你的系统,基础组件,例如 PHP-FPM 版本,数据库版本,是否支持最新版本的 ZABBIX。  如图,以我当前情况下,从 5.0LTS 到 6.0,只要保证 PHP-FPM 版本>7.2 即可。 备份停掉现有的 Zabbix-Server,并备份数据库,备份相关配置文件。 12345service zabbix-server stopmysqldump zabbix >...
RouterOS GREv6 隧道做 OSPF
整体思路是两个 ROS 路由器做 GREv6 隧道,然后通过 OSPF 互宣路由。因为只有一个 OSPF 区域,所以直接放在 Area0 了,在 ROS 里叫 Backbone。 前提条件:  两边 GRE 隧道已经拉起来了。 ROS1:GRE 接口-> gre6-r2 业务接口:br_main ROS2: GRE 接口-> gre6-r1 业务接口:br_main、br_vm  操作步骤: 1、修改 R1 的 RouterID:Routing/OSPF/Instances 2、为 R1 添加 OSPF 接口,把 GRE 接口和业务接口都加进去:Routing/OSPF/Interface注意网络类型是 Broadcast 3、为 R1 添加要宣告的网络:Routing/OSPF/Networks 4、启用 R1 的 Area:Routing/OSPF/Areas 5、R2 需要重复 1-4 5、查看 R1...
RouterOS HE.NET DDNSv6 脚本
RouterOS 的 Cloud 其实是支持 Push IPv6 地址的,会很“智能”的推送默认 IPv6 的前缀地址,但如果网络环境是多线的情况下,这个智能就显得比较鸡肋。所以我们一般把 Cloud 的 IPv6 Support 关掉,找第三方的服务去做 DDNS。 如何干掉 ROS 原生的 DDNSv6 以下脚本可以帮助你将 ROS 某个接口的 IPv6 地址,推送给 HE.NET 的 DDNS 上。这是完全依赖 ROS 命令和 HE.NET 官方接口的,无需借助第三方服务器,安全可靠。 1234567891011121314151617181920212223:global hostname "xxxx.ddns6.16iot.cn":global password "p@ssw0rd2022":global intv6 "pppoe-out":log info ("[ipv6_ddns]" . $intv6 . " is running."):global...











