jly8866 / archer

基于inception的自动化SQL操作平台,支持SQL执行、LDAP认证、发邮件、OSC、SQL查询、SQL优化建议、权限管理等功能,支持docker镜像
Apache License 2.0
1.56k stars 645 forks source link
devops django inception mysql python sql web

archer

基于inception的自动化SQL操作平台,支持工单、审核、定时任务、邮件、OSC等功能,还可配置MySQL查询、慢查询管理、会话管理等


目录

开发语言和推荐环境

python3.4及以上  
django1.8.17  
mysql : 5.6及以上  
linux : 64位linux操作系统均可  

主要功能

设计规范

主要配置文件

采取docker部署

手动安装步骤

  1. 环境准备
    • 克隆代码到本地或者下载zip包
      git clone https://github.com/jly8866/archer.git
    • 安装inception
      项目地址
  2. 安装python3,版本号>=3.4(由于需要修改官方模块,请使用virtualenv或venv等单独隔离环境!)
    pip3 install virtualenv
    virtualenv venv4archer --python=python3.4
  3. 安装所需相关模块
    source venv4archer/bin/activate
    pip3 install -r requirements.txt
  4. pymysql模块兼容inception版本信息
    使用src/docker/pymysql目录下的文件替换/path/to/python3/lib/python3.4/site-packages/pymysql/对应文件

启动前准备

  1. 创建archer本身的数据库表
    • 修改archer/archer/settings.py所有的地址信息,包括DATABASES和INCEPTION_XXX部分
    • 通过model创建archer本身的数据库表,如果是现有版本升级请使用src/init_sql内的变更脚本变更数据库
      原v1.1.1分支请使用v1.1.1->v2.0.sql变更
      原master分支请使用master->v2.0.sql变更
      全新安装请使用如下方式初始化
      python3 manage.py makemigrations sql  
      python3 manage.py migrate 
  2. 创建admin系统root用户(该用户可以登录django admin来管理model)
    python3 manage.py createsuperuser
  3. 启动,有两种方式
    (1)用django内置runserver启动服务,建议不要在生产环境使用
    bash debug.sh
    (2)用gunicorn+nginx启动服务
    安装模块pip3 install gunicorn==19.7.1
    nginx配置示例

    server{
            listen 9123; #监听的端口
            server_name archer;
            proxy_read_timeout 600s;  #超时时间与gunicorn超时时间设置一致,主要用于在线查询
    
            location / {
              proxy_pass http://127.0.0.1:8888;
              proxy_set_header Host $host:9123; #解决重定向404的问题
              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 /archer/static; #此处指向settings.py配置项STATIC_ROOT目录的绝对路径,用于nginx收集静态资源
            }
    
            error_page 404 /404.html;
                location = /40x.html {
            }
    
            error_page 500 502 503 504 /50x.html;
                location = /50x.html {
            }
        } 

    启动 bash startup.sh

  4. 正式访问
    使用上面创建的管理员账号登录http://X.X.X.X:port/login/

其他功能集成

在线查询

  1. settings中QUERY改为True
  2. 到【后台数据管理】-【从库地址配置】页面添加从库信息
  3. 到【后台数据管理】-【工作流配置】页面配置审核流程
  4. 用户申请权限、审核通过后即可进行在线查询
  5. 如需要使用动态脱敏,请将settings中DATA_MASKING_ON_OFF改为True,并且到【后台数据管理】-【脱敏配置】页面配置脱敏规则和字段

慢日志管理

  1. settings中SLOWQUERY改为True
  2. 安装percona-toolkit(版本=3.0.6),以centos为例
    yum -y install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm 
    yum -y install percona-toolkit.x86_64 
  3. 使用src/script/mysql_slow_query_review.sql创建慢日志收集表到archer数据库
  4. 将src/script/analysis_slow_query.sh部署到各个监控机器,注意修改脚本里面的 hostname="${mysql_host}:${mysql_port}"与archer主库配置信息一致,否则将无法筛选到相关记录

SQLAdvisor优化工具

  1. 安装SQLAdvisor,项目地址
  2. 修改配置文件SQLADVISOR为程序路径,路径需要完整,如'/opt/SQLAdvisor/sqladvisor/sqladvisor'

阿里云rds管理

  1. 修改配置文件ALIYUN_RDS_MANAGE=True
  2. 安装模块
    pip3 install aliyun-python-sdk-core==2.3.5
    pip3 install aliyun-python-sdk-core-v3==2.5.3
    pip3 install aliyun-python-sdk-rds==2.1.1
  3. 在【后台数据管理】-【阿里云认证信息】页面,添加阿里云账号的accesskey信息,重新启动服务
  4. 在【后台数据管理】-【阿里云rds配置】页面,添加实例信息,即可实现对阿里云rds的进程管理、慢日志管理

admin后台加固,防暴力破解

  1. patch目录下,名称为django_1.8.17_admin_secure_archer.patch
  2. 使用命令
    patch  python/site-packages/django/contrib/auth/views.py django_1.8.17_admin_secure_archer.patch

集成ldap

  1. 修改配置文件ENABLE_LDAP=True,安装相关模块,可以启用ldap账号登录,以centos为例
    yum install openldap-devel
    pip install django-auth-ldap==1.3.0
  2. 如果使用了ldaps,并且是自签名证书,需要打开settings中AUTH_LDAP_GLOBAL_OPTIONS的注释
  3. settings中以AUTH_LDAP开头的配置,需要根据自己的ldap对应修改

系统体验

点击体验

角色 账号 密码
管理员 archer archer
工程师 engineer archer
审核人 auditor archer
DBA dba archer

部分问题解决办法

查看错误日志

/tmp/default.log & /tmp/archer.err

页面样式显示异常

SQL上线

检测SQL报错

无法生成回滚语句

脱敏规则未生效

规则类型 规则脱敏所用的正则表达式,表达式必须分组,隐藏的组会使用****代替 需要隐藏的组 规则描述
手机号 (.{3})(.*)(.{4}) 2 保留前三后四
证件号码 (.*)(.{4})$ 2 隐藏后四位
银行卡 (.*)(.{4})$ 2 隐藏后四位
邮箱 (.*)@(.*) 2 去除后缀

审核人看不到查询权限申请待审核工单

查询权限申请待办列表被隐藏至右上角的消息图标中,当有待审核信息时会显示图标,可以进入查看待办数据

慢日志不显示

定时任务未执行

联系方式