第33关 使用gin开发webhook转发服务,实现prometheus和falco的钉钉、企业微信、飞书报警发送

------> 课程视频同步分享在今日头条B站

大家好,我是博哥爱运维。
出这期视频,也是为了给第30关的falco公开课补一个坑,关于falco报警这块这期将补上,同时,对于这个gin开发的webhook服务源码这块,计划是放在后面运维golang开发课程里面再分享出来会比较好,毕竟这个需要一些golang开发语言的基础。

支持的镜像,为了方便大家下载使用,特地在阿里云注册一个个人镜像仓库:

registry.cn-beijing.aliyuncs.com/bogeit/boge-webhook:1.0

docker容器化运行

docker run -d \
  --name boge-webhook \
  -p 9999:9999 \
  -e TZ="Asia/Shanghai" \
  registry.cn-beijing.aliyuncs.com/bogeit/boge-webhook:1.0 \
  -webhook https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxxxxxxxxxxxxx \
  -port 9999 \
  -filters "serviceA,DeadMansSnitch"

k8s运行

apiVersion: v1
kind: Service
metadata:
  name: boge-webhook
  labels:
    app: boge-webhook
    model: falco
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 9999
  type: ClusterIP
  selector:
    app: boge-webhook
    model: falco

---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: boge-webhook
    model: falco
  name: boge-webhook
spec:
  replicas: 1
  selector:
    matchLabels:
      app: boge-webhook
      model: falco
  template:
    metadata:
      labels:
        app: boge-webhook
        model: falco
    spec:
      containers:
      - name: boge-webhook
        image: registry.cn-beijing.aliyuncs.com/bogeit/boge-webhook:1.0
        env:
          - name: TZ
            value: Asia/Shanghai
        ports:
        - containerPort: 9999
        args:
          - -webhook
          - "https://open.feishu.cn/open-apis/bot/v2/hook/xxxxxxxxxxxxxxxxxxx"
          - -port
          -  "9999"
          - -filters
          - "serviceA,DeadMansSnitch"
# 对于falco,filters白名单字段只填pod名称开头关键词是匹配所有ns,填namespace_pod开头关键词是匹配指定ns里面的服务


测试接口

# curl 10.0.1.201:9999/status

{"msg":"ok"}

# curl -X POST -H 'Content-type: application/json' -d '{"name": "boge","titlea": "'"$(id)"'", "texta": "'"$(whoami)--$(hostname)"'"}' 10.0.1.201:9999/b01bdc063/boge/getjson


# 查看webhook后端服务日志
# docker logs boge-webhook

[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.

[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
 - using env:   export GIN_MODE=release
 - using code:  gin.SetMode(gin.ReleaseMode)

[GIN-debug] GET    /status                   --> main.MyWebServer.func1 (3 handlers)
[GIN-debug] POST   /b01bdc063/boge/getjson   --> main.MyWebServer.func2 (3 handlers)
[GIN-debug] POST   /7332f19/prometheus/dingtalk --> main.MyWebServer.func3 (3 handlers)
[GIN-debug] POST   /1bdc0637/prometheus/feishu --> main.MyWebServer.func4 (3 handlers)
[GIN-debug] POST   /5e00fc1a/prometheus/weixin --> main.MyWebServer.func5 (3 handlers)
[GIN-debug] POST   /3c1e8/falcon/feishu      --> main.MyWebServer.func6 (3 handlers)
[GIN-debug] POST   /3c1e8/falcon/dingtalk    --> main.MyWebServer.func7 (3 handlers)
[GIN-debug] POST   /3c1e8/falcon/weixin      --> main.MyWebServer.func8 (3 handlers)
[GIN-debug] [WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value.
Please check https://pkg.go.dev/github.com/gin-gonic/gin#readme-don-t-trust-all-proxies for details.
[GIN-debug] Listening and serving HTTP on :9999
{"name": "boge","titlea": "uid=0(root) gid=0(root) groups=0(root)", "texta": "root--boge"}
[GIN] 2024/04/02 - 17:45:50 | 200 |      78.745µs |      10.0.1.201 | POST     "/b01bdc063/boge/getjson"


编辑 falco 服务的 webhook 接收配置

falco相关内容可以查看博哥之前分享的文档:
https://blog.csdn.net/weixin_46887489/article/details/135758197

# 配置 falcosidekick 报警输出的 webhook 地址:

kubectl -n falco edit secrets falco-falcosidekick
  #在下面配置(内容是base64编码 http://10.0.1.201:9999/3c1e8/falcon/feishu)
  WEBHOOK_ADDRESS: aaHR0cDovLzEwLjAuMS4yMDE6OTk5OS8zYzFlOC9mYWxjb24vZmVpc2h1Cg==

在这里插入图片描述

编辑 prometheus 服务的 webhook 接收配置

http://10.0.1.201:9999/1bdc0637/prometheus/feishu
详细配置见博哥之前讲解的 prometheus发送报警的文档:
https://blog.csdn.net/weixin_46887489/article/details/135612462

在这里插入图片描述

大家有什么问题,可以找博哥进技术交流群里面交流,目前群已接近400人,想进群趁早
在这里插入图片描述

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
基于golang gin微信点餐小程序的设计与实现需要考虑以下几个方面: 1. 架构设计:可以使用MVC(Model-View-Controller)架构,将代码按功能模块划分成不同的包,便于管理和维护。 2. 数据库设计:根据需求,设计适当的数据库结构,存储菜单信息、用户信息、订单信息等。可以使用系型数据库如MySQL或非系型数据库如MongoDB。 3. 用户认证与授权:使用微信小程序的登录功能进行用户认证,获取用户的OpenID等信息。为了保护用户数据安全,可以使用JWT(JSON Web Token)生成访问令牌,并设置权限控制,确保只有授权的用户能够访问相接口。 4. 页面设计与交互:根据需求设计小程序的首页、菜单页、购物车、订单页等页面,合理安排页面布局和交互逻辑。可以使用小程序自带的模板或自定义组件进行页面开发。 5. 菜单管理:实现菜单的增删改查功能,包括菜品的图片、名称、价格、描述等信息。为了提高用户体验,可以增加搜索和排序等功能。 6. 购物车与订单管理:用户选择菜品后,将菜品添加到购物车,并生成相应的订单。可以实现购物车的增删改查功能,以及订单的支付、取消等功能。 7. 接口设计与实现:根据需求设计合适的API接口,包括菜单管理接口、用户认证接口、购物车接口、订单接口等。使用golang的gin框架实现这些接口,并进行参数校验、错误处理等。 8. 部署与测试:将小程序部署到服务器上,并进行测试,确保功能正常运行。可以使用Postman等工具对API接口进行测试,模拟用户操作验证功能是否正确。 基于以上几个方面的设计与实现,可以打造一个基于golang gin微信点餐小程序,实现用户点餐、下单和支付的功能,提供便捷的餐饮服务
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值