arqueiro
Uma plataforma de operação SQL automatizada com base no início suporta ordens de serviço, auditorias, tarefas de tempo, e -mails, OSC e outras funções. Ele também pode configurar a consulta MySQL, gerenciamento de consultas lentas, gerenciamento de sessões etc.
Índice
- Funções principais
- Especificações de projeto
- Experiência online
- Instalar
- Implantação do Docker
- Instalação manual
- correr
- Integração funcional
- Consulta on -line e consulta de dessensibilização
- Gerenciamento de log lento
- Ferramentas de otimização SQL
- Alibaba Cloud RDS Management
- Q&A
Ambiente de linguagem e recomendação de desenvolvimento
python3.4及以上
django1.8.17
mysql : 5.6及以上
linux : 64位linux操作系统均可
Funções principais
- A revisão automática inicia o lançamento do SQL, as ordens de serviço são enviadas e o início é revisado automaticamente. Depois que a revisão é aprovada, o auditor precisa revisá -lo manualmente.
- Revisão manual
O INCECCOMENTO REVISTO automaticamente as ordens de serviço será revisado por outros engenheiros de P&D ou gerentes de P&D. Operações de DBA executarão o SQL
Por que precisamos de revisão manual?
Isso segue a conscientização do processo das operações on -line no campo de operação e manutenção. Se um engenheiro quiser atualizar o banco de dados on -line SQL, é melhor verificar por outro engenheiro. Muitas vezes, o DBA não conhece o significado comercial do SQL; portanto, a revisão manual é melhor para ser revisada por outros engenheiros de P&D ou gerentes de P&D. Este é o conceito de design de arqueiro - As declarações de reversão podem ser exibidas na ordem de trabalho de exibição de dados de reversão, apoiando o envio de um clique de ordens de serviço de reversão
- Execute o SQL regularmente
As ordens de serviço aprovadas pelo DBA podem ser executadas regularmente. O tempo de execução pode ser modificado antes da execução e pode ser encerrado a qualquer momento. - A execução do PT-Oc suporta a exibição de progresso da execução do PT-OSC, e você pode clicar para abortar o processo PT-ASC
- Biblioteca, tabelas e palavras-chave do MySQL
- O gerenciamento de permissão de consulta do MySQL é baseado na criação de declarações de consulta. As permissões de consulta suportam restringir o aplicativo, revisão e gerenciamento de permissões de consulta no nível da tabela, suporte a configuração do processo de auditoria e auditoria de vários níveis.
- A dessensibilização dinâmica da consulta MySQL é baseada na criação de declarações de consulta e pode alcançar a dessensibilização dinâmica de dados sensíveis em combinação com as regras de configuração e dessensibilização do campo de dessensibilização (expressões regulares).
- O Slow Log Management é baseado no PT_QUERY_DIGEST OF PERCONA-TOOLKIT para analisar e armazenar logs lentos e exibi-los no lado da web.
- As notificações por email podem ser configuradas com lembretes de email para notificar aplicativos on -line, aplicativos de permissão, resultados de revisão etc. e notificar o login anormal.
Especificações de projeto
- O design e as especificações do banco de dados razoáveis são muito necessárias, especialmente os bancos de dados MySQL. O kernel não é tão poderoso quanto o Oracle, DB2, SQL Server e outros bancos de dados. Requer design razoável para jogar com seus pontos fortes e evitar suas fraquezas. A indústria da Internet madura madura MySQL Design especificações e está escrita da seguinte maneira. Por favor, peça aos leitores que treinem todos os desenvolvedores de back -end com essa especificação antes que a empresa fique on -line para usar o sistema Archer, para que eles saibam o motivo e o que.
Baixe o link https://github.com/jly8866/archer/blob/master/src/docs/mysql_db_design_guide.md
Principais arquivos de configuração
- Archer/archer/Settings.py
Adote Docker
- Imagem do Docker, Wiki de referência
- Imagem inicial: https://hub.docker.com/r/hhyo/inception
- Archer Imagem: https://hub.docker.com/r/hhyo/archer
- Docker Image Production Obrigado @小彩票线
Etapas de instalação manual
- Preparação ambiental
- Clonando o código para o local ou baixando o pacote ZIP
git clone https://github.com/jly8866/archer.git - Instale o início
Galeria de Projetos
- Instale o python3, número da versão> = 3.4 (Como você precisa modificar o módulo oficial, use VirtualEnv ou Venv para isolar o ambiente separadamente!)
pip3 install virtualenv
virtualenv venv4archer --python=python3.4
- Instale os módulos relacionados necessários
source venv4archer/bin/activate
pip3 install -r requirements.txt
- Informações da versão do Intecepção Compatível do Módulo PymySQL Usa o arquivo no diretório SRC/Docker/Pymysql para substituir /path/to/python3/lib/python3.4/site-packages/pymysql/ arquivo correspondente arquivo correspondente
Prepare -se antes de começar
- Crie a tabela de banco de dados do próprio arqueiro
- Modifique todas as informações de endereço do arqueiro/archer/Settings.py, incluindo bancos de dados e peças em Inception_xxx
- Crie a tabela de banco de dados do próprio arqueiro através do modelo. Se for uma atualização da versão existente, use o script de alteração no src/init_sql para alterar a ramificação V1.1.1 original do banco de dados. Use v1.1.1-> v2.0.sql para alterar a filial mestre original. Use Master-> v2.0.SQL para alterar a nova instalação. Use o seguinte método para inicializá -lo da seguinte maneira
python3 manage.py makemigrations sql
python3 manage.py migrate
- Crie um usuário do sistema de administração (este usuário pode fazer login no django admin para gerenciar o modelo)
python3 manage.py createsuperuser - Existem duas maneiras de começar
(1) Use o RunServer interno do Django para iniciar o serviço e é recomendável não usá-lo no ambiente de produção
bash debug.sh
(2) Use Gunicorn+Nginx para iniciar o módulo de instalação de serviço pip3 install gunicorn==19.7.1
Exemplo de configuração do 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 {
}
}
Start bash startup.sh - Acesso oficial ao login com a conta do administrador criada acima
http://XXXX:port/login/
Outros recursos integração
Consulta online
- Altere a consulta para true nas configurações
- Para a página [Gerenciamento de dados em segundo plano]-[Configuração de endereço da biblioteca de escravos], adicione informações da biblioteca de escravos
- Vá para [Gerenciamento de dados em segundo plano]-[Configuração do fluxo de trabalho] Processo de revisão de configuração da página
- Os usuários podem realizar consultas on -line após se inscrever em permissões e passar na revisão
- Se você precisar usar a dessensibilização dinâmica, altere o Data_masking_on_off nas configurações para true e vá para a página [Gerenciamento de dados de back-end]-[Configuração de dessensibilização] para configurar regras e campos de dessensibilização e campos
Gerenciamento de log lento
- SlowQuery é alterado para true nas configurações
- Instale Percona-Toolkit (versão = 3.0.6), tomando o CentOS como exemplo
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
- Crie tabelas de coleta de logs lentos para o Banco de Dados de Arqueiro usando SRC/SCRIPT/MYSQL_SLOW_QUERY_REVIEW.SQL
- Implante SRC/SCRIPT/ANISSIAL_SLOW_QUERY.SH em cada máquina de monitoramento. Observe que
hostname="${mysql_host}:${mysql_port}" no script é consistente com as informações de configuração da biblioteca principal do Archer, caso contrário, os registros relevantes não serão filtrados.
Ferramenta de otimização do SQLADVISOR
- Instale o sqladvisor, endereço do projeto
- Modificar o arquivo de configuração Sqladvisor no caminho do programa, o caminho precisa ser completo, como '/opt/sqladvisor/sqladvisor/sqladvisor'
Alibaba Cloud RDS Management
- Modificar o arquivo de configuração Aliyun_rds_manage = true
- Instale o módulo
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
- Na página [Back-end Data Management]-[Ali Cloud Certification Information], adicione as informações de acesso da AccessKey da conta do Alibaba Cloud e reinicie o serviço
- Na página [Gerenciamento de dados em segundo plano]-[Ali Cloud RDS RDS], adicione informações da instância para realizar o gerenciamento de processos e o gerenciamento lento de log do Alibaba Cloud RDS RDS
Reforço de back-end do administrador, rachaduras à prova de bruto
- No diretório patch, o nome é Django_1.8.17_admin_secure_archer.patch
- Use comandos
patch python/site-packages/django/contrib/auth/views.py django_1.8.17_admin_secure_archer.patch
LDAP integrado
- Modificar o arquivo de configuração Atable_ldap = true, instalar o módulo relevante, você pode ativar o login da conta LDAP, tomar o CentOS como exemplo
yum install openldap-devel
pip install django-auth-ldap==1.3.0
- Se o LDAPS for usado e for um certificado autoassinado, você precisará abrir o comentário de auth_ldap_global_options nas configurações
- As configurações começando com auth_ldap nas configurações precisam ser modificadas de acordo com seu próprio LDAP correspondente
Experiência do sistema
Clique para experimentar
| Papel | conta | senha |
|---|
| administrador | arqueiro | arqueiro |
| engenheiro | engenheiro | arqueiro |
| Revisor | auditor | arqueiro |
| DBA | DBA | arqueiro |
Alguns problemas resolvidos
Visualize o log de erros
/tmp/default.log & /tmp/archer.err
Exceção de exibição de estilo de página
- RunServer/Debug.sh começa
Debug está fechado em configurações, isto é, depuração = false, e precisa adicionar -insegura após o comando de inicialização e se tornar - nginx+gunicorn/startup.sh start
A configuração de recursos estática do Nginx está incorreta location /static {
alias /archer/static; #此处指向settings.py配置项STATIC_ROOT目录的绝对路径,用于nginx收集静态资源,一般默认为archer按照目录下的static目录
}
Gerenciamento de usuários
- Às vezes, o erro do usuário é relatado pelo nginx+gunicorn/startup.sh. A implantação de vários trabalhadores pode ocorrer. O problema não foi resolvido no momento.
- Incapaz de fazer login (confirme que o nome de usuário e a senha estão corretos)
Verifique se o campo IS_Active do usuário é 1
SQL está online
O cluster não exibe banco de dados
Archer filtrará alguns bancos de dados do sistema por padrão, e a lista de filtros é 'information_schema', 'performance_schema', 'mysql', 'test', 'sys'
O revisor não mostra usuários válidos que não são uma função de revisor/DBA
Não há botão de execução depois que a revisão é passada
O processo de lançamento do SQL da Archer é: o engenheiro envia SQL-> Auditor Review-> DBA Execution. O auditor pode revisar apenas os dados que pertencem à sua própria revisão, e o DBA executa todos os dados.
Detecte o erro SQL
- Literal inválido para int () com a base 10: 'INCMECCOME2'
Ajuste o PymySQL para torná -lo compatível com as informações da versão inicial.
Use o arquivo no diretório SRC/Docker/Pymysql para substituir o arquivo no /py/python3/lib/python3.4/site-packages/pymysql/ diretório - Informações de fonte inválidas
A senha não pode incluir * - Deve começar como declaração de início
O módulo PymySQL do Python3 enviará a declaração Show avisos para o início, fazendo com que o início retorne um erro "deve iniciar como iniciar". O arqueiro informará que o arquivo no/spath/to/python3/lib/python3.4/site-packages/pymysql/ é usado no log para substituir o arquivo no /path/to/python3/lib/python3.4/site-packages/pymysql/ diretório. - Nome do banco de dados incorreto ''
A verificação inicial não suporta subcons - Informações de backup remotas inválidas
O início não pode se conectar à biblioteca de backup
Não é possível gerar uma declaração de reversão
- Verifique a configuração relacionada à criação no arquivo de configuração
- Verifique as permissões de iniciação que audita usuários e usuários de backup, referência de permissão
— inception备份用户
GRANT SELECT, INSERT, CREATE ON *.* TO 'inception_bak'
— inception审核用户(主库配置用户,如果要使用会话管理需要赋予SUPER权限,如果需要使用OSC,请额外配置权限)
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER,REPLICATION CLIENT,REPLICATION SLAVE ON *.* TO 'inception'
— archer在线查询用户(从库配置用户)
GRANT SELECT ON *.* TO 'archer_read'
- Verifique o formato do binlog, ele precisa ser linha, binlog_row_image está cheio
- Verifique se a tabela DML tem chaves primárias
- Verifique se a instrução afeta os dados
- Verifique se a biblioteca de backup está ativada para o AutoComit
- Verifique se é uma instrução de atualização de tabela contínua
- Verifique se a instância de execução é mysql
As regras de dessensibilização não estão em vigor
- Verifique se o campo de dessensibilização hits (seja sensível ao caso)
- Verifique se a expressão regular da regra de dessensibilização pode corresponder aos dados. Se não puder corresponder, o resultado original será retornado.
- Verifique se o parâmetro check_query_on_off está desativado, fazendo com que o início não resolva as instruções que não são dessensibilizadas retornar diretamente o resultado da referência de configuração de regras de dessensibilização
| Tipo de regra | Expressões regulares usadas para dessensibilização regular devem ser agrupadas e os grupos ocultos serão substituídos por ****. | Grupos que precisam estar escondidos | Descrição da regra |
|---|
| Número de telefone | (. {3}) (.*) (. {4}) | 2 | Mantenha os três primeiros e os quatro últimos |
| Número de identificação | (.*) (. {4}) $ | 2 | Escondido os últimos quatro |
| cartão bancário | (.*) (. {4}) $ | 2 | Escondido os últimos quatro |
| Correspondência | (.*)@(.*) | 2 | Remova o sufixo |
O revisor não pode ver a permissão da consulta para solicitar a ordem de serviço pendente
O aplicativo de permissão de consulta List está oculto no ícone da mensagem no canto superior direito. O ícone será exibido quando houver informações a serem revisadas. Você pode inserir para visualizar os dados de tarefas.
Toras lentas não exibem
- Verifique a configuração no script e mantenha o conteúdo de configuração do nome do host e da biblioteca principal da Archer consistente e é usado para o Archer filtrar.
- Verifique se as informações de log coletadas pela tabela mysql_slow_query_review_history são consistentes com o nome do host
Tarefa cronometrada não executada
- Verifique se a tabela relacionada de django-apatcheduler foi criada, você pode usar
python3 manage.py migrate para criá-lo
Informações de contato
- Grupo QQ 1 Grupo 524233225 (completo)
- Grupo QQ 2 Grupo 669833720