使用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 通知-另外一种方法的更多相关文章

  1. nexus 数据库备份任务webhook 通知

    nexus 的数据库备份是比较重要的,可以方便我们在故障的是时候进行应用恢复. 以下使用benthos 组件进行nexus 数据库备份事件的应用通知处理 环境准备 使用docker-compose 运 ...

  2. Oracle备份归档日志文件的两种方法比较

    备份归档日志方式有两种:  1 单独备份归档日志:backup archivelog all  2 在执行备库时一起备份归档日志:backup database plus archivelog;  这 ...

  3. 第10章 同步设备I/O和异步设备I/O(3)_接收I/O请求完成通知的4种方法

    10.5 接收I/O请求完成的通知 (1)I/O请求被加入设备驱动程序的队列,当请求完成以后,设备驱动也要负责通知我们I/O请求己经完成. (2)可以用4种方法来接收I/O请求己经完成的通知 技术 特 ...

  4. SQLSERVER数据库中批量导入数据的几种方法

    第一:使用Select Into 语句 如果企业数据库都是采用SQL Server数据库的话,则可以利用select into语句实现数据的导入. select into语句的作用是把数据从另外一个数 ...

  5. 数据库数据用Excel导出的3种方法

    将数据库数据用Excel导出主要有3种方法:用Excel.Application接口.用OleDB.用HTML的Tabel标签 方法1——Excel.Application接口: 首先,需要要Exce ...

  6. 用C#从数据库动态生成AdminLTE菜单的一种方法

    当前的应用设计风格趋于Flat扁平化,很多基于BootStrap实现了很多UI非常漂亮的管理界面(Bootstrap admin template). 此核心文件开源在Github:https://g ...

  7. MS数据库优化查询最常见的几种方法

    1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2.I/O吞吐量小,形成了瓶颈效应. 3.没有创建计算列导致查询不优化. 4.内存不足 5.网络速度慢 6.查询出的数据量过大 ...

  8. Oracle 数据库中查看表空间的2种方法

    在Oracle数据库中查看表空间使用状况是我们在实际应用中经常涉及到的,以下的内容就就是对Oracle 数据库中查看表空间使用状况时所要用到的SQL的描述,希望你能从中获得自己想要的东西. Oracl ...

  9. MyBatis笔记----MyBatis数据库表格数据修改更新的两种方法:XML与注解

    继上 http://www.cnblogs.com/tk55/p/6659285.html http://www.cnblogs.com/tk55/p/6660477.html 注解 将id:8 na ...

随机推荐

  1. 关于Appium android input manager for Unicode 提示信息

    Appium调完输入法后,会弹出  Appium android input manager for Unicode 提示信息相关的提示信息,每次运行如此,如下图 网络上查找一遍,基本解决了,只要在设 ...

  2. CDN原理介绍(转)

    内容分发网络(Content delivery network或Content distribution network,缩写:CDN)是指一种通过互联网互相连接的电脑网络系统,利用最靠近每位用户的服 ...

  3. 原型设计软件介绍——Axure RPx

    我个人使用的是Axure RP8版本 进去后的主页面(汉化版),可以看到上方功能栏,缩放大小功能,左下角则是软件内置的一些元件 我在左边的元件库中拖入了一个矩形框,定义为640*960个像素,并把矩形 ...

  4. Linux 使用硬盘

    一.硬盘分区规划: swap(交换,掉期交易,互换)分区:虚拟内存使用,不能保存用户信息. boot(引导)分区:保存启动系统得相关文件. root(根)分区:放置系统文件得根,所有文件都保存在该分区 ...

  5. log4j:WARN Please initialize the log4j system properly解决办法

    使用log4j,报警如下: log4j:WARN No appenders could be found for logger log4j:WARN Please initialize the log ...

  6. Sharepoint 2016 配置FBA(四)添加用户到Membership数据库

    现在还不能用FBA登录,因为数据库还没有用户. 有一些方法来管理membership数据库,有可以用IIS来管理.推荐使用 SharePoint 2016 FBA Pack(https://share ...

  7. 编辑器测试-TinyMCE

    一级标签 二级便签 引用段落1231456456 普通段落 链接 简书 https://www.jianshu.com/p/edee77363855 import pygame WINWIDTH = ...

  8. 关于查询中查询无果,也不报错,inpout标签中的value属性为‘ ’的判断问题

    首先当我们标签中vlue属性可能为' '时,我们一定要在后端进行判断过滤,不然查询会什么都查不出来的,遇到的问题如下 例子如下: 这是一个easyui 中的下拉选,效果如下 当我们默认查询全部时,后台 ...

  9. Python 锁 同步 互斥锁

    import time from threading import Lock,Thread num = 100 def f1(loc): loc.acquire() global num tmp = ...

  10. 2018-软工机试-B- 梵高先生

    B. 梵高先生 单点时限: 1.0 sec 内存限制: 256 MB 谁的父亲死了 请你告诉我如何悲伤 谁的爱人走了 请你告诉我如何遗忘 ——李志<梵高先生> 2009年的最后一天 在义乌 ...