项目简介:
这是一个强大的SQL审核与数据分析平台,专为数据分析师和数据库管理员(DBA)设计。它定位于SQL审核查询平台,旨在提升DBA的工作效率,支持多数据库的SQL上线和查询,同时提供丰富的MySQL运维功能。
它的功能特性有:
SQL审核:所有执行的SQL语句都会被记录并可追溯,方便进行性能优化和问题排查。数据查询:提供了一套简洁直观的SQL编辑器,具备代码补全和错误提示功能,极大地提高了编写效率。报表生成:内置图表组件,可以快速将查询结果转化为可视化图表,便于数据解读和汇报。权限管理:通过RBAC(Role-Based Access Control)机制,实现对用户和资源的精细控制,确保数据安全。数据可视化:业务人员可以利用它自定义查询并生成报表,减少对IT部门的依赖。集成化:它可以无缝集成到现有的DevOps工具链中,如Jenkins、Git等,提升整体工作效率。数据分析:数据工程师和分析师可以直接在Archery上编写SQL进行数据探索,无需频繁切换工具。数据安全:通过SQL审计功能,DBA可以监控数据库的操作,防止恶意或误操作导致的数据泄露。
看看它的一些功能截图
你可以在页面上进行生产所需的sql提交,以便进行审核
还可以对sql进行分析
你可以在线编辑sql进行查询,编辑器带自动补全功能,支持sql美化,计划分析
还有sql优化工具,针对sql提出sql优化建议
慢日志显示功能
mysql示例管理,可新增各数据库实例,并且分配对于角色,组等权限
还可以进行数据库数据同步
sql审计功能
总的来说,这是一款强大、高效且完全免费的开源在线SQL审核查询工具,旨在提升 DBA的工作效率,它提供了一站式的SQL查询、审核、性能分析及优化服务,深度融合了先进的查询解析算法与智能化的规则引擎,能够对各类复杂的SQL语句进行深度剖析与精准识别。支持主流数据库的 SQL 上线和查询,同时支持丰富的 MySQL 运维功能,所有功能都兼容手机端操作,专为数据库管理和运维人员量身打造,旨在提升团队协作效率,确保数据库操作的安全性与准确性。项目名字叫做——Archery。有兴趣同学或者企业可以去试用下,看看是否满足你们的需求,个人觉得这个系统是非常适合企业使用的。
项目地址:
docker部署
安装docker
- 安装 Docker
curl -fsSL https://get.docker.com -o get-docker.sh | sudo sh
- 安装 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
准备运行配置
具体可参考:https://github.com/hhyo/Archery/tree/master/src/docker-compose文章源自玩技e族-https://www.playezu.com/841689.html
docker-compose.yml文件内的services可按照本身的运行环境来调整,同时注意检查版本号是否正确,比如说外部已经装好了mysql、redis、inception,就可以将对应的services删除,但是需要注意修改settings.py文件的相关配置,具体可以参考修改配置文章源自玩技e族-https://www.playezu.com/841689.html
启动
下载 Releases文件,解压后进入docker-compose文件夹文章源自玩技e族-https://www.playezu.com/841689.html
# 启动 docker-compose -f docker-compose.yml up -d # 表结构初始化 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 dbshell<sql/fixtures/auth_group.sql python3 manage.py dbshell<src/init_sql/mysql_slow_query_review.sql # 创建管理用户 python3 manage.py createsuperuser # 退出容器 exit # 日志查看和问题排查 docker logs archery -f --tail=50
访问
http://127.0.0.1:9123文章源自玩技e族-https://www.playezu.com/841689.html
启动后配置
在启动后 Archery 有一些配置(如Inception , 资源组, 权限组等)需要按需配置, 请详细阅读 配置项说明 , 按照自己的需要进行配置文章源自玩技e族-https://www.playezu.com/841689.html
配置SSL/TLS
步骤
- 准备nginx证书 请自行准备
- 上传证书
目录自定义。
比如:docker-compse目录下,创建nginx/cert目录。 - 修改nginx配置
增加443端口监听,并将http重定向至https端口。 - django配置settings.py
- 重新运行archery容器
- 验证
注意:要清除cookie缓存。
示例
第1/2步省略
测试是在内网使用,没有域名,使用了私网ip,自签名证书。文章源自玩技e族-https://www.playezu.com/841689.html
- 修改nginx配置
server{ listen 9123; #监听的端口 server_name archery; client_max_body_size 20M; proxy_read_timeout 600s; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; return 301 https://$host$request_uri; } # Settings for a TLS enabled server. server{ listen 443 ssl; #监听的端口 client_max_body_size 20M; proxy_read_timeout 600s; ssl_protocols TLSv1.2 TLSv1.3; ssl_certificate /etc/nginx/cert/192.168.1.3_chain.crt; # 配置证书文件地址 ssl_certificate_key /etc/nginx/cert/192.168.1.3_key.key; # 配置密钥文件地址 location / { proxy_pass http://127.0.0.1:8888; proxy_set_header Host $host; proxy_set_header X-Forwarded-Host $host:9123; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } location /static { alias /opt/archery/static; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }
- django配置settings.py
增加如下安全配置项:
SECURE_PROXY_SSL_HEADER = ("HTTP_X_FORWARDED_PROTO", "https") SECURE_SSL_REDIRECT = True # 将所有非SSL请求永久重定向到SSL SESSION_COOKIE_SECURE = True # 仅通过https传输cookie CSRF_COOKIE_SECURE = True # 仅通过https传输cookie SECURE_HSTS_INCLUDE_SUBDOMAINS = True # 严格要求使用https协议传输 SECURE_HSTS_PRELOAD = True SECURE_HSTS_SECONDS = 60 SECURE_CONTENT_TYPE_NOSNIFF = True # 防止浏览器猜测资产的内容类型 CSRF_TRUSTED_ORIGINS = ['192.168.1.3'] CORS_ORIGIN_WHITELIST = ( '192.168.1.3', )
- 重新运行archery容器
新建一个yml配置,单独重建archery容器:
version: '3' services: archery: image: hhyo/archery:v1.8.5 container_name: archery restart: always ports: - "9123:9123" - "443:443" volumes: - "./archery/settings.py:/opt/archery/archery/settings.py" - "./archery/soar.yaml:/etc/soar.yaml" - "./archery/docs.md:/opt/archery/docs/docs.md" - "./archery/downloads:/opt/archery/downloads" - "./archery/sql/migrations:/opt/archery/sql/migrations" - "./archery/logs:/opt/archery/logs" - "./archery/keys:/opt/archery/keys" - "./nginx/nginx.conf:/etc/nginx/nginx.conf" - "./nginx/cert:/etc/nginx/cert" entrypoint: "dockerize -wait tcp://mysql:3306 -wait tcp://redis:6379 -timeout 60s /opt/archery/src/docker/startup.sh" environment: NGINX_PORT: 9123 networks: - "archery-184_default" networks: archery-184_default: external: true
- 验证
重建archery容器后,清除浏览器cookie缓存验证。