从零到一:Archery SQL审核平台部署与钉钉告警集成实战

张开发
2026/4/21 14:42:49 15 分钟阅读

分享文章

从零到一:Archery SQL审核平台部署与钉钉告警集成实战
1. 环境准备与Docker部署在开始部署Archery之前我们需要先搭建好基础运行环境。这里我推荐使用Docker方式部署不仅能够避免复杂的依赖问题还能实现快速迁移和版本管理。我自己在多个生产环境都采用这种方案实测下来非常稳定。1.1 Docker环境搭建首先确保你的服务器是64位Linux系统CentOS 7/Ubuntu 18.04内存建议4GB以上。安装Docker只需执行以下命令# 一键安装Docker引擎 curl -fsSL https://get.docker.com -o get-docker.sh | sudo sh安装完成后别忘记启动服务并设置开机自启sudo systemctl start docker sudo systemctl enable docker验证安装是否成功可以运行docker version如果看到Client和Server版本信息说明安装正确。这里有个小坑要注意某些云厂商的镜像源可能需要额外配置如果拉取镜像速度慢建议修改为国内镜像源。1.2 Docker Compose安装Archery使用Docker Compose管理多容器编排我们需要安装1.24.1以上版本sudo curl -L https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose sudo chmod x /usr/local/bin/docker-compose验证安装时我遇到过PATH环境变量问题如果遇到command not found建议创建软链接到/usr/bin目录sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose2. Archery部署实战2.1 获取部署包建议直接从GitHub下载稳定版本这里以1.8.5为例wget https://github.com/hhyo/Archery/archive/refs/tags/v1.8.5.tar.gz tar xf v1.8.5.tar.gz解压后进入docker-compose目录你会看到几个关键文件docker-compose.yml主配置文件mysql/my.cnfMySQL配置文件redis.confRedis配置文件2.2 启动服务执行以下命令启动所有服务cd Archery-1.8.5/src/docker-compose docker-compose -f docker-compose.yml up -d这里有个大坑要特别注意MySQL容器可能不断重启。通过docker logs -f mysql查看日志如果发现/var/log/mysql/目录不存在的错误需要修改my.cnf中的log_bin路径sed -i s|/var/log/mysql/mysql-bin.log|/var/lib/mysql/mysql-bin.log|g mysql/my.cnf修改后重新启动服务docker-compose down docker-compose up -d2.3 初始化数据库等服务正常运行后需要初始化数据库结构docker exec -ti archery /bin/bash cd /opt/archery source /opt/venv4archery/bin/activate python3 manage.py makemigrations sql python3 manage.py migrate接着导入初始数据python3 manage.py dbshellsql/fixtures/auth_group.sql python3 manage.py dbshellsrc/init_sql/mysql_slow_query_review.sql最后创建管理员账户python3 manage.py createsuperuser按照提示输入用户名、邮箱和密码后重启archery服务使配置生效docker restart archery3. 系统配置详解3.1 资源组管理资源组是Archery的核心权限控制单元。我建议按照业务线或部门划分资源组比如电商事业部、金融事业部等。每个资源组可以配置独立的通知渠道登录后台http://服务器IP:9123进入系统管理 资源组管理点击新增填写名称和描述在Webhook栏预先留空等创建钉钉机器人后再回来配置3.2 数据库实例添加支持多种数据库类型这里以MySQL为例进入资源管理 实例管理点击新增填写实例信息实例名称生产环境_MySQL主库类型MySQL连接地址IP:端口用户名/密码具有适当权限的账号关联之前创建的资源组特别注意测试连接通过不代表权限足够建议用该账号执行SHOW GRANTS确认有PROCESS、SELECT等权限。3.3 用户权限配置用户权限体系采用用户-组-资源组三级结构创建权限组系统管理 组管理DBA组勾选所有SQL相关权限开发组仅勾选提交工单、查询权限添加用户系统管理 用户管理关联对应权限组分配可访问的资源组3.4 工单流程定制不同业务线可能需要不同的审批流程进入系统管理 工作流为每种工单类型设置审批链简单查询开发组长审批即可生产变更开发组长→DBA→技术总监可以为不同资源组设置独立流程4. 钉钉告警集成4.1 机器人创建在钉钉群内操作群设置 → 智能群助手 → 添加机器人选择自定义类型设置机器人名称勾选加签安全选项记录下Webhook URL和加签密钥4.2 Archery配置回到资源组管理编辑目标资源组在Webhook填写{ 钉钉: { webhook: https://oapi.dingtalk.com/robot/send?access_tokenxxx, secret: SECxxx } }启用通知功能系统管理 配置项管理 通知配置开启所有通知类型设置通知模板4.3 全流程测试提交测试SQL工单在钉钉群确认收到工单提交通知审批通过后确认工单通过通知执行完成后检查执行结果通知如果收不到通知建议按以下步骤排查检查机器人加签计算是否正确查看Archery日志docker logs archery -f测试curl直接调用Webhook是否正常整个配置过程中最关键的其实是权限体系的规划。建议先在测试环境充分验证各种场景再推广到生产环境。我在实际项目中就遇到过审批链配置错误导致工单卡住的情况后来我们建立了标准的权限矩阵文档这个问题就再没出现过。

更多文章