arquero
Una plataforma de operación SQL automatizada basada en el inicio admite órdenes de trabajo, auditorías, tareas de tiempo, correos electrónicos, OSC y otras funciones. También puede configurar la consulta MySQL, la gestión de consultas lentas, la gestión de sesiones, etc.
Tabla de contenido
- Funciones principales
- Especificaciones de diseño
- Experiencia en línea
- Instalar
- Implementación de Docker
- Instalación manual
- correr
- Integración funcional
- Consulta de consulta y desensibilización en línea
- Gestión lenta de registro
- Herramientas de optimización de SQL
- Alibaba Cloud RDS Management
- Preguntas y respuestas
Lenguaje de desarrollo y entorno de recomendación
python3.4及以上
django1.8.17
mysql : 5.6及以上
linux : 64位linux操作系统均可
Funciones principales
- La revisión automática inicia el lanzamiento de SQL, se envían órdenes de trabajo y el inicio se revisa automáticamente. Después de que se aprueba la revisión, el auditor necesita revisarla manualmente.
- Revisión manual
El inicio revisó automáticamente los pedidos de trabajo serán revisados por otros ingenieros de I + D o gerentes de I + D. Las operaciones de DBA ejecutarán SQL
¿Por qué necesitamos una revisión manual?
Esto sigue a la conciencia del proceso de las operaciones en línea en el campo de operación y mantenimiento. Si un ingeniero quiere actualizar la base de datos en línea SQL, es mejor verificarlo por otro ingeniero. Muchas veces, el DBA no conoce el significado comercial de SQL, por lo que la revisión manual es mejor para ser revisada por otros ingenieros de I + D o gerentes de I + D. Este es el concepto de diseño de Archer - Las declaraciones de reversión se pueden mostrar en la orden de trabajo de visualización de datos de reversión, lo que admite el envío de un solo clic de las órdenes de trabajo de reversión
- Ejecutar SQL regularmente
Las órdenes de trabajo aprobadas por el DBA se pueden ejecutar regularmente. El tiempo de ejecución se puede modificar antes de la ejecución y puede finalizarse en cualquier momento. - La ejecución de PT-OSC admite la pantalla de progreso de ejecución de PT-OSC, y puede hacer clic para abortar el proceso PT-OSc
- La biblioteca de consultas MySQL, las tablas y las palabras clave completan automáticamente las restricciones de los resultados de los resultados de la consulta, la exportación de resultados de la consulta, la pantalla de la estructura de la tabla y la pantalla de conjunto multi-resistencia
- La gestión del permiso de la consulta MySQL se basa en las declaraciones de consulta de análisis de inicio. Los permisos de consulta admiten restringir la aplicación, revisión y administración de permisos de consulta a nivel de tabla, compatibilidad con la configuración del proceso de auditoría y la auditoría de niveles múltiples.
- La desensibilización dinámica de la consulta MySQL se basa en las declaraciones de consulta de análisis de inicio, y puede lograr la desensibilización dinámica de datos confidenciales en combinación con la configuración del campo de desensibilización y las reglas de desensibilización (expresiones regulares).
- Slow Log Management se basa en PT_Query_Digest de Percona-Toolkit para analizar y almacenar registros lentos, y mostrarlos en el lado web.
- Las notificaciones de correo electrónico se pueden configurar con recordatorios por correo electrónico para notificar a las aplicaciones en línea, aplicaciones de permisos, revisar los resultados, etc. y notificar el inicio de sesión anormal.
Especificaciones de diseño
- El diseño y las especificaciones razonables de la base de datos son muy necesarios, especialmente las bases de datos MySQL. El kernel no es tan poderoso como Oracle, DB2, SQL Server y otras bases de datos. Requiere un diseño razonable para jugar con sus fortalezas y evitar sus debilidades. La industria de Internet tiene especificaciones de diseño MySQL maduras, y está escrita de la siguiente manera. Solicite a los lectores que capaciten a todos los desarrolladores de backend con esta especificación antes de que la compañía se conecte para usar el sistema Archer, para que sepan la razón y por qué.
Descargar enlace https://github.com/jly8866/archer/blob/master/src/docs/mysql_db_design_guide.md
Archivos de configuración principales
- Archer/Archer/settings.py
Adoptar Docker
- Imagen de Docker, wiki de referencia
- Imagen de inicio: https://hub.docker.com/r/hhyo/inception
- Imagen de Archer: https://hub.docker.com/r/hhyo/archer
- Producción de imágenes de Docker gracias @小彩票线
Pasos de instalación manuales
- Preparación ambiental
- Clonando el código al local o descargando el paquete zip
git clone https://github.com/jly8866/archer.git - Instalar inicio
Galería de proyectos
- Instale Python3, número de versión> = 3.4 (ya que necesita modificar el módulo oficial, use VirtualEnv o VenV para aislar el entorno por separado!)
pip3 install virtualenv
virtualenv venv4archer --python=python3.4
- Instale los módulos relacionados requeridos
source venv4archer/bin/activate
pip3 install -r requirements.txt
- El módulo Pymysql Información de la versión de inicio compatible utiliza el archivo en el directorio SRC/Docker/Pymysql para reemplazar /path/to/python3/lib/python3.4/site-packages/pymysql/ correspondiente archivo
Prepararse antes de comenzar
- Crea la tabla de base de datos del arquero en sí
- Modifique toda la información de dirección de Archer/Archer/Settings.py, incluidas bases de datos e piezas Inception_XXX
- Cree la tabla de base de datos del arquero a través del modelo. Si se trata de una actualización de la versión existente, utilice el script de cambio en src/init_sql para cambiar la rama original de la base de datos V1.1.1. Utilice V1.1.1-> v2.0.sql para cambiar la rama maestra original. Utilice Master-> v2.0.sql para cambiar la nueva instalación. Utilice el siguiente método para inicializarlo de la siguiente manera
python3 manage.py makemigrations sql
python3 manage.py migrate
- Cree un usuario root del sistema de administración (este usuario puede iniciar sesión en Django Admin para administrar el modelo)
python3 manage.py createsuperuser - Hay dos formas de comenzar
(1) Use Django incorporado RunServer para iniciar el servicio, y se recomienda no usarlo en el entorno de producción
bash debug.sh
(2) Use Gunicorn+Nginx para iniciar el módulo de instalación del servicio pip3 install gunicorn==19.7.1
Ejemplo de configuración de 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 {
}
}
Iniciar bash startup.sh - Acceso oficial a iniciar sesión con la cuenta de administrador creada anteriormente
http://XXXX:port/login/
Otras características de integración
Consulta en línea
- Cambiar la consulta a verdadero en la configuración
- A la página [Configuración de la dirección [Configuración de la dirección de la biblioteca de esclavos], agregue información de la biblioteca de esclavos
- Vaya a [Gestión de datos de fondo]-Proceso de revisión de configuración de la página [Configuración de flujo de trabajo]
- Los usuarios pueden realizar consultas en línea después de solicitar permisos y aprobar la revisión
- Si necesita usar la desensibilización dinámica, cambie DATA_MASKING_ON_OFF en Configuración a Verdadero y vaya a la página [Gestión de datos de backend]--[Configuración de desensibilización] para configurar reglas y campos de desensibilización
Gestión lenta de registro
- Lento se cambia a verdadero en la configuración
- Instale Percona-Toolkit (versión = 3.0.6), tomando CentOS como ejemplo
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
- Crear tablas de recolección de registro lento a Archer Database usando src/script/mysql_slow_query_review.sql
- Implemente src/script/análisis_slow_query.sh a cada máquina de monitoreo. Tenga en cuenta que
hostname="${mysql_host}:${mysql_port}" en el script es consistente con la información de configuración de la biblioteca principal de Archer, de lo contrario, los registros relevantes no se filtrarán.
Herramienta de optimización sqladvisor
- Instalar sqladvisor, dirección del proyecto
- Modifique el archivo de configuración SQLAdVISOR en la ruta del programa, la ruta debe completarse, como '/Opt/Sqladvisor/Sqladvisor/Sqladvisor'
Alibaba Cloud RDS Management
- Modificar el archivo de configuración Aliyun_rds_Manage = True
- Instale el 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
- En la página [Gestión de datos de backend]-[Información de certificación Cloud de Ali], agregue la información de AccessKey de la cuenta de la nube de Alibaba y reinicie el servicio
- En la página [Gestión de datos de fondo]-[Configuración de Ali Cloud RDS], agregue información de instancia para realizar la gestión de procesos y la gestión lenta de registros de Alibaba Cloud RDS
Refuerzo de backend de administración, agrietamiento a prueba de bruto
- En el directorio de parche, el nombre es django_1.8.17_admin_secure_archer.patch
- Usar comandos
patch python/site-packages/django/contrib/auth/views.py django_1.8.17_admin_secure_archer.patch
LDAP integrado
- Modificar el archivo de configuración enable_ldap = true, instalar el módulo relevante, puede habilitar el inicio de sesión de la cuenta LDAP, tomar CentOS como ejemplo
yum install openldap-devel
pip install django-auth-ldap==1.3.0
- Si se usa LDAPS y es un certificado autofirmado, debe abrir el comentario de auth_ldap_global_options en la configuración
- Las configuraciones que comienzan con Auth_LDAP en la configuración deben modificarse de acuerdo con su propio LDAP correspondiente
Experiencia del sistema
Haga clic para experimentar
| Role | cuenta | contraseña |
|---|
| administrador | arquero | arquero |
| ingeniero | ingeniero | arquero |
| Crítico | auditor | arquero |
| Dba | dba | arquero |
Algunos problemas resueltos
Ver registro de errores
/tmp/default.log & /tmp/archer.err
Excepción de visualización de estilo de página
- RunServer/Debug.sh comienza
La depuración está cerrada en la configuración, es decir, debug = false, y necesita agregar -Insecure después del comando de inicio y convertirse en - nginx+gunicorn/startup.sh inicio
La configuración de recursos estáticos de NGINX es incorrecta location /static {
alias /archer/static; #此处指向settings.py配置项STATIC_ROOT目录的绝对路径,用于nginx收集静态资源,一般默认为archer按照目录下的static目录
}
Gestión de usuarios
- A veces, el error del usuario es informado por Nginx+Gunicorn/Startup.Sh. La implementación de múltiples trabajadores puede ocurrir. El problema no se ha resuelto en la actualidad.
- No se puede iniciar sesión (confirme que el nombre de usuario y la contraseña son correctos)
Compruebe si el campo IS_Active del usuario es 1
SQL está en línea
El clúster no muestra la base de datos
Archer filtrará algunas bases de datos del sistema de forma predeterminada, y la lista de filtros es 'information_schema', 'performance_schema', 'mysql', 'test', 'sys'
El revisor no muestra a usuarios válidos que no son un rol de revisor/DBA
No hay botón de ejecución después de que se apruebe la revisión
El proceso de lanzamiento de SQL de Archer es: El ingeniero envía SQL-> Auditor Review-> DBA Ejecución. El auditor solo puede revisar los datos que pertenecen a su propia revisión, y el DBA ejecuta todos los datos.
Detectar el error SQL
- Literal no válido para int () con la base 10: 'Inception2'
Ajuste PYMYSQL para que sea compatible con la información de la versión de inicio.
Use el archivo en el directorio src/docker/pymysql para reemplazar el archivo en /path/to/python3/lib/python3.4/site-packages/pymysql/ directorio - Información de origen no válida
La contraseña no puede incluir * - Debe comenzar como declaración de inicio
El módulo PymysQL de Python3 enviará una declaración de advertencias de Show al inicio, lo que hace que el inicio devuelva un error "Debe comenzar como una declaración de inicio". El arquero informará que el archivo en el directorio /path/to/python3/lib/python3.4/site-packages/pymysql/ se usa en el registro para reemplazar el archivo en el /path/to/python3/lib/python3.4/site-packages/pymysql/ directorio. - Nombre de la base de datos incorrecta ''
Inception Check no admite subconsulto - Información de copia de seguridad remota no válida
Inception no puede conectarse a la biblioteca de copia de seguridad
No se puede generar una declaración de reversión
- Verifique la configuración relacionada con el inicio en el archivo de configuración
- Verifique los permisos de los usuarios de auditoría de Inception y los usuarios de respaldo, referencia de permiso
— 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 el formato binlog, debe ser fila, binlog_row_image está lleno
- Verifique si la tabla DML tiene claves primarias
- Verifique si la declaración afecta los datos
- Compruebe si la biblioteca de copia de seguridad está habilitada para autocommit
- Verifique si se trata de una declaración de actualización de la tabla continua
- Compruebe si la instancia de ejecución es mysql
Las reglas de desensibilización no están vigentes
- Compruebe si el campo de desensibilización golpea (si es sensible a la caja)
- Verifique si la expresión regular de la regla de desensibilización puede coincidir con los datos. Si no puede coincidir, se devolverá el resultado original.
- Verifique si el parámetro check_query_on_off está apagado, lo que hace que el inicio no resuelva declaraciones que no se desensibilizan directamente la referencia de configuración de las reglas de desensibilización de resultados
| Tipo de regla | Las expresiones regulares utilizadas para la desensibilización regular deben agruparse, y los grupos ocultos serán reemplazados por ****. | Grupos que necesitan estar ocultos | Descripción de la regla |
|---|
| Número de teléfono | (. {3}) (.*) (. {4}) | 2 | Mantenga los primeros tres y los últimos cuatro |
| Número de identificación | (.*) (. {4}) $ | 2 | Oculto los últimos cuatro |
| tarjeta bancaria | (.*) (. {4}) $ | 2 | Oculto los últimos cuatro |
| Correo | (.*)@(.*) | 2 | Eliminar sufijo |
El revisor no puede ver el permiso de consulta para solicitar la orden de trabajo pendiente
La lista de solicitud de permiso de consulta está oculta en el icono de mensaje en la esquina superior derecha. El icono se mostrará cuando haya información que se revise. Puede ingresar para ver los datos de tareas pendientes.
Los registros lentos no se muestran
- Verifique la configuración en el script y mantenga el contenido de configuración del nombre de host y la biblioteca principal de Archer consistente, y se usan para que Archer filtre.
- Verifique si la información de registro recopilada por la tabla mysql_slow_query_review_history es consistente con el nombre de host
Tarea cronometrada no ejecutada
- Verifique si se ha creado la tabla relacionada de Django-Spcheduler, puede usar
python3 manage.py migrate para crearlo
Información del contacto
- QQ Group 1 Grupo 524233225 (completo)
- QQ Group 2 Grupo 669833720