nexus 数据库备份任务webhook 通知-另外一种方法

Posted rongfengliang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nexus 数据库备份任务webhook 通知-另外一种方法相关的知识,希望对你有一定的参考价值。

使用benthos 做为webhook,是一种方法,功能很强大,但是有点复杂,所以换了一个更简单直接的webhook 工具
根据请求的数据,只处理关于db exporter 任务部分的消息,然后就是调用shell 执行一些逻辑处理

环境处理

使用docker-compose 运行

  • docker-compose 文件
version: "3"
services:
  webhook:
    image: almir/webhook
    command: ["-verbose", "-hooks=/etc/webhook/hooks.json","-hotreload"]
    volumes:
    - "./hooks.json:/etc/webhook/hooks.json"
    - "./app.sh:/app.sh"
    ports:
    - "9000:9000"
  nexus:
    image: sonatype/nexus3
    ports:
    - "8081:8081"
    volumes:
    - ./nexus-data:/nexus-data
    - ./backup/:/backup/
  • webhook 配置文件

    hooks.json 主要是定义webhook 的match 规则,以及匹配规则之后执行的shell,因为是post 请求,所以使用了payload source

[
    {
      "id": "webhook",
      "execute-command": "/app.sh",
      "command-working-directory": "/",
      "include-command-output-in-response":true,
      "pass-arguments-to-command":
      [
        {
          "source": "payload",
          "context": "audit.context"
        },
        {
          "source": "payload",
          "type": "audit.type"
        }
      ],
      "trigger-rule":
      {
        "and":
        [
          {
            "match":
            {
              "type": "value",
              "value": "Admin - Export databases for backup",
              "parameter":
              {
                "source": "payload",
                "name": "audit.context"
              }
            }
          },
          {
            "match":
            {
              "type": "value",
              "value": "finished",
              "parameter":
              {
                "source": "payload",
                "name": "audit.type"
              }
            }
          }
        ]
      }
    }
  ]
  • 执行shell

    为了测试,很简单,就是echo 信息

#!/bin/sh
echo "this is a demo app"

启动&&测试

  • 启动
docker-compose up -d
  • 配置nexus webhook (audit) 以及db exporter task

    主要是通过global 的webhook 通知db exporter 任务已经完成,然后完成之后可以执行一些固定的shell 脚本

audit 配置,路径是更具json 定义文件编写的

技术图片
db exporter task 配置,这个可以根据实际自己调整
技术图片

  • 测试
    点击db exporter 的run 即可
    效果
webhook_1 | [webhook] 2019/04/28 11:45:00 [2bb51c] error extracting command arguments: couldn‘t retrieve argument for {Source:payload Name: EnvName: Base64Decode:false}
webhook_1 | [webhook] 2019/04/28 11:45:00 [2bb51c] error extracting command arguments: couldn‘t retrieve argument for {Source:payload Name: EnvName: Base64Decode:false}
webhook_1 | [webhook] 2019/04/28 11:45:00 [2bb51c] executing /app.sh (/app.sh) with arguments ["/app.sh" "" ""] and environment [] using / as cwd
webhook_1 | [webhook] 2019/04/28 11:45:00 [2bb51c] command output: this is a demo app
webhook_1 | 
webhook_1 | [webhook] 2019/04/28 11:45:00 [2bb51c] finished handling webhook
webhook_1 | [webhook] 2019/04/28 11:45:00 200 | 2.733775ms | webhook:9000 | POST /hooks/webhook 
webhook_1 | [webhook] 2019/04/28 11:50:00 [e1803a] incoming HTTP request from 172.19.0.3:58026
webhook_1 | [webhook] 2019/04/28 11:50:00 [e1803a] webhook got matched
webhook_1 | [webhook] 2019/04/28 11:50:00 [e1803a] webhook got matched, but didn‘t get triggered because the trigger rules were not satisfied
webhook_1 | [webhook] 2019/04/28 11:50:00 200 | 198.993µs | webhook:9000 | POST /hooks/webhook 
webhook_1 | [webhook] 2019/04/28 11:50:00 [3dc5af] incoming HTTP request from 172.19.0.3:58028
webhook_1 | [webhook] 2019/04/28 11:50:00 [3dc5af] webhook got matched
webhook_1 | [webhook] 2019/04/28 11:50:00 [3dc5af] webhook got matched, but didn‘t get triggered because the trigger rules were not satisfied
webhook_1 | [webhook] 2019/04/28 11:50:00 200 | 143.131µs | webhook:9000 | POST /hooks/webhook 
webhook_1 | [webhook] 2019/04/28 11:50:00 [3496eb] incoming HTTP request from 172.19.0.3:58030
webhook_1 | [webhook] 2019/04/28 11:50:00 [3496eb] webhook got matched
webhook_1 | [webhook] 2019/04/28 11:50:00 [3496eb] webhook got matched, but didn‘t get triggered because the trigger rules were not satisfied

说明

使用adnanh/webhook 比使用benthos 方便简单好多,功能已经够用了

参考资料

https://github.com/rongfengliang/nexus-webhook-dbbackup
https://github.com/adnanh/webhook/

以上是关于nexus 数据库备份任务webhook 通知-另外一种方法的主要内容,如果未能解决你的问题,请参考以下文章

cos migration工具webhook推送

将从 webhook 收到的通知传递给应用程序反应原生

无法将我的网站注册为用于配置来自 google 的 webhook 通知的 webhook

仅在 Stripe 中的平台余额更新时收到通知 - WebHook

未收到贝宝 webhook 通知

Visual Studio App Center 中的 Email 和 Webhook 通知