go

即使程序被 taskmgr.exe 终止,也可以记录信息
go

即使程序被 taskmgr.exe 终止,也可以记录信息

我正在用 Go 编写一个程序,如果能在任务管理器中或在控制台中执行 /taskkill 终止任务时,将“正在停止”消息添加到日志文件中,那就太好了。在测试时,如果我在 VS Code 终端中按 CTRL+C,它会在日志文件中写入“正在停止”消息,但如果我构建 exe 然后执行它,则在关闭或终止时无法写入消息。 有什么办法可以实现吗? 提前致谢。 ...

Admin

Grafana - 电子邮件通知上有一个查看面板按钮
go

Grafana - 电子邮件通知上有一个查看面板按钮

我正在从具有旧警报的 Grafana 8 切换到具有新统一警报系统的 Grafana 10.3。我希望电子邮件通知有按钮来访问链接到警报的仪表板和面板,就像旧的警报系统一样。我知道这是可能的,因为几个月前我在测试通知模板时偶然做到了这一点。然而,由于从那时起配置多次更改,我不记得配置是什么,按钮完全从我的电子邮件通知中消失了。查看 grafana 文档和旧版本的配置也无济于事。我试图在我的电子邮件通知中获取以下内容: 这是我的通知模板: {{- define "email.message_alert" -}} {{ .Labels.alertname ...

Admin

Idflags 无法用于设置 go build 的版本
go

Idflags 无法用于设置 go build 的版本

我对使用 Go 还很陌生,我注意到当我构建 Go 项目时,我通过以下方式从 GitHub 克隆了: $ go build 可执行文件已构建,但是当我运行时: $ mediamtx --version 我得到 v0.0.0 我使用 Google 搜索了该问题,发现我可以设置 Idflags 参数来设置构建时的版本,因此我尝试: go build -ldflags="-X 'github.com/bluenviron/mediamtx/internal/core.Version=v1.5.0'" 不幸的是,我最终遇到了完全相同的问题,并且标识标志似乎什么都...

Admin

HAProxy 和 Golang Fiber 实例的健康检查失败和 502 错误
go

HAProxy 和 Golang Fiber 实例的健康检查失败和 502 错误

我有一个设置,其中服务器 A 充当客户端,通过 HAProxy 与服务器 B 通信。服务器 B 运行四个类似的 Golang Fiber 实例,每个实例都在 EC2 t3xlarge 实例上启用了 Prefork。服务器 B 每秒处理数千个请求。但是,我注意到健康检查存在问题,HAProxy 返回了 502 错误,这可能表示健康检查失败。 前端配置: frontend apifront bind *:9898 maxconn 50000 mode http log global default_backend apis...

Admin

监听所有接口、多个服务器
go

监听所有接口、多个服务器

我有一个服务器在所有接口上监听端口(使用 go net.Listen("tcp", ":{port}"))。我还有一个使用相同代码的备份服务器,用于在第一台服务器发生故障时启动。两台机器使用具有外部 IP 地址的同一路由器。路由器为每个连接的设备分配一个私有 IP 地址。客户端使用路由器的外部 IP(和给定端口)拨打服务器。 从备份服务器切换回第一台服务器时,两台服务器都会短暂地监听所有接口。同一台机器上不能有多个这样的监听器,但可以从不同的机器监听。我的问题是,如果有多个监听器从不同的机器(具有不同的私有 IP 地址)监听所有接口上的端口,会发生什么?客户...

Admin

Redhat ubi8-micro 容器没有受信任的根 CA 证书
go

Redhat ubi8-micro 容器没有受信任的根 CA 证书

我想在registry.access.redhat.com/ubi8/ubi-micro图像上运行一个简单的 GO 应用程序。 但不幸的是,x509: certificate signed by unknown authority我的应用程序出现错误,因为 ubi8-micro 容器上似乎没有根 ca 信任库。 在我的 Dockerfile 中尝试了类似的操作,但没有成功: FROM registry.access.redhat.com/ubi8/go-toolset as build USER root RUN yum update ca-certif...

Admin

使用 postgres、golang 和 Debian 11、Agora appbuilder 后端运行 Docker 容器或 docker compose 时出错
go

使用 postgres、golang 和 Debian 11、Agora appbuilder 后端运行 Docker 容器或 docker compose 时出错

我在 AWS 上启动了一个 Debian 11 EC2,并在其上安装了 postgres 14.5 以及 docker 和 docker compose。我为 postgres 添加了“admin”超级用户并使用密码。我创建了 docker-compose.yml 文件和 .env 文件。 当我尝试使用 docker-compose.yml 文件时,我得到: sudo docker compose up -d services.database.environment must be a mapping 当我用以下方式构建docker容器时 sudo do...

Admin

更新二进制文件的最佳方法?
go

更新二进制文件的最佳方法?

因此,我正在制作一个可编译为二进制文件的负载平衡器。这将扩展到多台服务器。 要更新,程序本身将每 5 分钟检查一次 GitHub 存储库中是否有新版本,如果有新版本,它会下载并覆盖旧版本,然后运行命令systemctl restart lb。 现在我的问题是,这是一种不好的做法吗,这样做有什么缺点吗,除此之外还有更好的更新做法吗? -- 顺便提一下,运行 cronjob 并不理想。 ...

Admin

netcat 对使用 gopacket 制作的 syn 数据包没有反应
go

netcat 对使用 gopacket 制作的 syn 数据包没有反应

我想对 TCP 数据包进行一些实验。因此,我使用 gopacket (v1.1.19) 来制作数据包并将它们发送到接口。我有此代码用于创建 SYN 数据包并将其放在环回上并发送到 127.0.0.1:8888,其中我有一个 ncat 服务器正在监听 ( ncat -v -l 127.0.0.1 8888)。 我可以按预期在 wireshark 上看到我的数据包,但服务器没有发送 SYN/ACK 数据包。从浏览器调用 localhost:8888 完全没问题。而且我已将我的数据包构建为类似于浏览器发送的数据包(校验和、时间戳和端口当然不同)。 有人知道我的问题...

Admin

近乎实时地关联会话和 NAT 日志
go

近乎实时地关联会话和 NAT 日志

我有一个用户活动记录器和查询系统,适用于日志事件率非常高的 ISP(5k-10k/秒)。它需要基于一个公共InternalIP字段关联 Radius/Session 和 NAT Syslog。每个会话都有两个事件 Start 和 Stop。3000 个用户产生的大约 24 小时数据可能达到 2000 万条记录,预计还会增加。 我的解决方案包括针对每种日志类型的 2 个解析和持久代理,使用 Golang 编写,后端为 Postgresql db。我在两方面都遇到了一些问题。即使在内存中缓冲系统日志事件后,解析和存...

Admin

Nginx 服务器持续提供 Debian 主页服务
go

Nginx 服务器持续提供 Debian 主页服务

我正在尝试建立一个简单的自定义网站。我使用 Golang 和 Gin-gonic 框架构建了一个简单的服务器。我的 Go 服务器如下: func main() { r := gin.Default() r.GET("/", ServeMainPage) r.GET("/icons/openlogo-75.png", func(c *gin.Context) { c.File("favicon.ico") }) r.GET("/episode/:id...

Admin

如何正确将请求远程地址转发到代理的 Go 服务?
go

如何正确将请求远程地址转发到代理的 Go 服务?

Request.RemoteAddr我有一个简单的 go 服务,它使用标准检查请求 IP 地址net/http 包。 该 go 服务部署在 nginx 后面,具有以下简单的位置配置: location /api { proxy_pass http://localhost:8080; } 显然,当应用程序部署在代理后面时,Request.RemoteAddr现在返回本地主机/服务器地址(例如::1) 我知道我可以定义类似的东西: proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-F...

Admin

EOL 对 Linux 发行版中主存储库中的特定软件包有何作用?
go

EOL 对 Linux 发行版中主存储库中的特定软件包有何作用?

我正在运行 Ubuntu 18.04 LTS,其 EOL 日期为 2023 年 4 月。go1.10 包含在 Ubuntu 18.04 主存储库中。这已经被视为 EOL。(https://endoflife.date/go) 根据https://ubuntu.com/about/release-cycle 基础系统承诺在当前 LTS 或临时版本期间以及此后的一段时间内进行公共维护。 这似乎表明 Ubuntu 18.04 中包含的 go1.10 仍然作为 Ubuntu LTS 的一部分受到“支持”。 这在实践中意味着什么?Ubuntu 18.04 附带的 ...

Admin

Golang-Nginx 代理传递问题
go

Golang-Nginx 代理传递问题

我有一个在端口 3001 上运行的 golang 应用程序。 curl http://127.0.0.1:3001给出了正确的 HTML 响应。但是当我尝试通过 NginX 执行 proxy_pass 时遇到了问题。 以下是我的 NginX 配置。我正在做一个基于路由的位置块 - upstream my-app { server 127.0.0.1:3001; } server { listen 80 default_server; server_name localhost; und...

Admin

增加 Windows 上的 TCP 服务器监听积压大小
go

增加 Windows 上的 TCP 服务器监听积压大小

我正在用 Go 开发 TCP 服务器,它应该能够同时接受最多 500 个客户端连接。 我正在使用它net.Listen("tcp4", listenerAddress)来创建我的 TCP 侦听器。 我在 Linux 上遇到了一个问题,当所有 500 个客户端同时连接时 - TCP 接受队列会被填满。在我的 Linux 系统上,这个队列是 128。所以我通过内核参数增加队列大小来解决这个问题:sysctl -w net.core.somaxconn=512。 但是如何在 Windows 中实现这一点?在我的 Windows Server OS 上,队列大...

Admin