archer
Une plate-forme de fonctionnement SQL automatisée basée sur la création prend en charge les bons de travail, les audits, les tâches de synchronisation, les e-mails, les OSC et autres fonctions. Il peut également configurer la requête MySQL, la gestion lente des requêtes, la gestion de session, etc.
Table des matières
- Fonctions principales
- Spécifications de conception
- Expérience en ligne
- Installer
- Déploiement de Docker
- Installation manuelle
- courir
- Intégration fonctionnelle
- Requête en ligne et requête de désensibilisation
- Gestion des journaux lents
- Outils d'optimisation SQL
- Alibaba Cloud RDS Management
- Q&R
Langage de développement et environnement de recommandation
python3.4及以上
django1.8.17
mysql : 5.6及以上
linux : 64位linux操作系统均可
Fonctions principales
- La revue automatique initie le lancement de SQL, les bons de travail sont soumis et la création est automatiquement examinée. Une fois l'examen passé, l'auditeur doit l'examiner manuellement.
- Revue manuelle
La création a automatiquement examiné les bons de travail sera examiné par d'autres ingénieurs de R&D ou gestionnaires de R&D. Les opérations DBA exécuteront SQL
Pourquoi avons-nous besoin d'un examen manuel?
Cela suit la conscience du processus des opérations en ligne dans le domaine de l'opération et de la maintenance. Si un ingénieur souhaite mettre à jour la base de données en ligne SQL, il est préférable de le vérifier par un autre ingénieur. Plusieurs fois, la DBA ne connaît pas la signification commerciale de SQL, donc l'examen manuel est préférable à être examiné par d'autres ingénieurs de R&D ou gestionnaires de R&D. Ceci est le concept de conception d'Archer - Les instructions de recul peuvent être affichées dans le commandement d'affichage des données en arrière, prenant en charge la soumission en un clic des ordres de travail en arrière
- Exécuter régulièrement SQL
Les ordres de travail approuvés par la DBA peuvent être exécutés régulièrement. Le temps d'exécution peut être modifié avant l'exécution et peut être résilié à tout moment. - L'exécution PT-OSC prend en charge l'affichage de progression de l'exécution PT-OSC, et vous pouvez cliquer pour interrompre le processus PT-OSC
- Bibliothèque de requêtes MySQL, tableaux et mots clés terminent automatiquement les restrictions de jeu de résultats de requête, l'exportation des résultats de la requête, l'affichage de la structure de table et l'écran multi-résultats
- La gestion de la permission de la requête MySQL est basée sur des instructions de requête d'analyse de création. Les autorisations de requête prennent en charge la restriction de l'application, de l'examen et de la gestion des autorisations de requête au niveau de la table, de la configuration du processus d'audit de prise en charge et de l'audit à plusieurs niveaux.
- La désensibilisation dynamique de la requête MySQL est basée sur des instructions de requête d'analyse de création, et il peut réaliser une désensibilisation dynamique des données sensibles en combinaison avec des règles de configuration et de désensibilisation des champs de désensibilisation (expressions régulières).
- La gestion des journaux lents est basée sur PT_Query_digest de Percona-Toolkit pour analyser et stocker des journaux lents, et les afficher du côté Web.
- Les notifications par e-mail peuvent être configurées avec des rappels par e-mail pour informer les applications en ligne, les applications d'autorisation, les résultats de révision, etc., et aviser la connexion anormale.
Spécifications de conception
- La conception et les spécifications raisonnables de la base de données sont très nécessaires, en particulier les bases de données MySQL. Le noyau n'est pas aussi puissant qu'Oracle, DB2, SQL Server et d'autres bases de données. Cela nécessite un design raisonnable pour jouer à vos forces et éviter vos faiblesses. L'industrie Internet a des spécifications de conception MySQL matures, et elle est écrite comme suit. Veuillez demander aux lecteurs de former tous les développeurs backend avec cette spécification avant que l'entreprise ne soit en ligne pour utiliser le système Archer, afin qu'ils sachent la raison et pourquoi.
Télécharger le lien https://github.com/jly8866/archer/blob/master/src/docs/mysql_db_design_guide.md
Fichiers de configuration principaux
- archer / archer / settings.py
Adopter Docker
- image docker, wiki de référence
- IMCEPTION IMAGE: https://hub.docker.com/r/hhyo/inception
- Image archer: https://hub.docker.com/r/hhyo/archer
- Production d'image docker merci @ 小彩票线
Étapes d'installation manuelles
- Préparation environnementale
- Clonage du code au local ou téléchargement du package zip
git clone https://github.com/jly8866/archer.git - Installer la création
Galerie de projets
- Installez Python3, numéro de version> = 3.4 (puisque vous devez modifier le module officiel, veuillez utiliser VirtualEnv ou Venv pour isoler l'environnement séparément!)
pip3 install virtualenv
virtualenv venv4archer --python=python3.4
- Installez les modules liés requis
source venv4archer/bin/activate
pip3 install -r requirements.txt
- Informations sur la version de création compatible du module Pymysql Utilise le fichier dans le répertoire SRC / docker / pymysql pour remplacer /path/to/python3/lib/python3.4/site-packages/pymysql/ fichier correspondant
Préparez-vous avant de commencer
- Créez le tableau de la base de données de l'Archer lui-même
- Modifiez toutes les informations d'adresse d'Archer / Archer / Settings.py, y compris des bases de données et des pièces INCECPET_XXX
- Créez le tableau de la base de données de l'Archer lui-même via le modèle. S'il s'agit d'une mise à niveau de version existante, veuillez utiliser le script de modification dans SRC / INIT_SQL pour modifier la branche V1.1.1 originale de la base de données. Veuillez utiliser v1.1.1-> v2.0.sql pour modifier la branche maître originale. Veuillez utiliser Master-> v2.0.sql pour modifier la nouvelle installation. Veuillez utiliser la méthode suivante pour l'initialiser de la manière suivante
python3 manage.py makemigrations sql
python3 manage.py migrate
- Créer un utilisateur racine du système d'administration (cet utilisateur peut se connecter à Django Admin pour gérer le modèle)
python3 manage.py createsuperuser - Il y a deux façons de commencer
(1) Utilisez Django RunServer intégré pour démarrer le service, et il est recommandé de ne pas l'utiliser dans un environnement de production
bash debug.sh
(2) Utilisez GUNICORN + NGINX pour démarrer le module d'installation du service pip3 install gunicorn==19.7.1
Exemple de configuration 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 {
}
}
Démarrer bash startup.sh - Accès officiel à la connexion avec le compte administrateur créé ci-dessus
http://XXXX:port/login/
Autres fonctionnalités d'intégration
Requête en ligne
- Modifier la requête en vrai dans les paramètres
- À la page [Gestion des données de fond] - [Configuration de l'adresse de la bibliothèque d'esclaves], ajoutez des informations sur la bibliothèque des esclaves
- Accédez à [Gestion des données de fond] - [Configuration du workflow] Processus de révision de la configuration de la page
- Les utilisateurs peuvent mener des demandes en ligne après avoir demandé des autorisations et passer l'examen
- Si vous avez besoin d'utiliser la désensibilisation dynamique, veuillez modifier les données_masking_on_off dans les paramètres de TRUE et accédez à la page [Backend Data Management] - [Configuration de désensibilisation] pour configurer les règles et champs de désensibilisation
Gestion des journaux lents
- SlowQuery est changé en vrai dans les paramètres
- Installez Percona-Toolkit (version = 3,0,6), en prenant Centos comme exemple
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
- Créez des tables de collecte de journaux lents vers la base de données Archer à l'aide de SRC / Script / MySQL_SLOW_QUERY_REVIEW.SQL
- Déployez SRC / Script / Analysis_Slow_Query.sh à chaque machine de surveillance. Notez que
hostname="${mysql_host}:${mysql_port}" dans le script est cohérent avec les informations de configuration de la bibliothèque principale Archer, sinon les enregistrements pertinents ne seront pas filtrés.
Outil d'optimisation sqladvisor
- Installer Sqladvisor, adresse du projet
- Modifiez le fichier de configuration sqladvisor sur le chemin du programme, le chemin doit être complet, tel que '/ opt / sqladvisor / sqladvisor / sqladvisor'
Alibaba Cloud RDS Management
- Modifiez le fichier de configuration aliyun_rds_manage = true
- Installer le module
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
- Sur la page [Backend Data Management] - [Ali Cloud Certification Information], Ajoutez les informations AccessKey du compte Cloud Alibaba et redémarrez le service
- Sur la page [Gestion des données de fond] - [Ali Cloud RDS Configuration] Page, ajoutez des informations sur l'instance pour réaliser la gestion des processus et la gestion lente des journaux d'Alibaba Cloud RDS
Renforcement du backend d'administration, fissure à l'épreuve brute
- Dans le répertoire de patch, le nom est django_1.8.17_admin_secure_archer.patch
- Utiliser les commandes
patch python/site-packages/django/contrib/auth/views.py django_1.8.17_admin_secure_archer.patch
LDAP intégré
- Modifiez le fichier de configuration active_ldap = true, installez le module pertinent, vous pouvez activer la connexion du compte LDAP, prendre CentOS à titre d'exemple
yum install openldap-devel
pip install django-auth-ldap==1.3.0
- Si LDAPS est utilisé et qu'il s'agit d'un certificat auto-signé, vous devez ouvrir le commentaire de AUTH_LDAP_GLOBAL_OPTIONS dans les paramètres
- Les configurations commençant par auth_ldap dans les paramètres doivent être modifiées en fonction de leur propre LDAP correspondant
Expérience système
Cliquez pour expérimenter
| Rôle | compte | mot de passe |
|---|
| administrateur | archer | archer |
| ingénieur | ingénieur | archer |
| Critique | auditeur | archer |
| Dba | dba | archer |
Quelques problèmes résolus
Afficher le journal d'erreur
/tmp/default.log & /tmp/archer.err
Exception d'affichage du style de page
- RunServer / Debug.sh commence
Debug est fermé dans les paramètres, c'est-à-dire debug = false, et il doit ajouter - insurre après la commande de démarrage, et devenir - nginx + gunicorn / startup.sh start
La configuration de ressources statique de Nginx est incorrecte location /static {
alias /archer/static; #此处指向settings.py配置项STATIC_ROOT目录的绝对路径,用于nginx收集静态资源,一般默认为archer按照目录下的static目录
}
Gestion des utilisateurs
- Parfois, l'erreur utilisateur est rapportée par Nginx + Gunicorn / Startup.sh. Un déploiement multi-travailleur peut se produire. Le problème n'a pas été résolu actuellement.
- Impossible de se connecter (confirmer que le nom d'utilisateur et le mot de passe sont corrects)
Vérifiez si l'utilisateur IS_Active Field est 1
SQL est en ligne
Le cluster n'affiche pas la base de données
Archer filtrera certaines bases de données système par défaut, et la liste des filtres est 'information_schema', 'performance_schema', 'mysql', 'test', 'sys'
Le réviseur ne montre pas les utilisateurs valides qui ne sont pas un rôle de réviseur / DBA
Il n'y a pas de bouton d'exécution après le passage de l'examen
Le processus de lancement SQL d'Archer est: l'ingénieur soumet SQL-> Auditeur Review-> DBA EXÉCUTION. L'auditeur ne peut examiner que les données qui appartiennent à sa propre revue, et le DBA exécute toutes les données.
Détecter l'erreur SQL
- littéral non valide pour int () avec la base 10: «Inception2»
Ajustez Pymysql pour le rendre compatible avec les informations de version de création.
Utilisez le fichier dans le répertoire SRC / Docker / PymySQL pour remplacer le fichier dans le répertoire /path/to/python3/lib/python3.4/site-packages/pymysql/ - Informations de source non valides
Le mot de passe ne peut pas inclure * - Doit commencer comme déclaration de début
Le module PymySQL de Python3 enverra une instruction AWARNings à la création, ce qui fait que la création renvoie une erreur "doit démarrer comme début". L'Archer rapportera que le fichier dans le /path/to/python3/lib/python3.4/site-packages/pymysql/ Le répertoire est utilisé dans le journal pour remplacer le fichier dans /path/to/python3/lib/python3.4/site-packages/pymysql/ répertoire. - Nom de la base de données incorrecte ''
Le chèque de création ne prend pas en charge la sous-requête - Informations de sauvegarde à distance non valides
La création ne peut pas se connecter à la bibliothèque de sauvegarde
Impossible de générer une instruction Rollback
- Vérifiez la configuration liée à la création dans le fichier de configuration
- Vérifiez les autorisations des utilisateurs d'audit de création et des utilisateurs de sauvegarde, référence d'autorisation
— 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'
- Vérifiez le format de binlog, il doit être une ligne, binlog_row_image est pleine
- Vérifiez si la table DML a des clés principales
- Vérifiez si l'instruction affecte les données
- Vérifiez si la bibliothèque de sauvegarde est activée pour AutoCommit
- Vérifiez s'il s'agit d'une instruction de mise à jour de table continue
- Vérifiez si l'instance d'exécution est MySQL
Les règles de désensibilisation ne sont pas en vigueur
- Vérifiez si le champ de désensibilisation arrive (s'il est sensible à la casse)
- Vérifiez si l'expression régulière de la règle de désensibilisation peut correspondre aux données. S'il ne peut pas correspondre, le résultat d'origine sera retourné.
- Vérifiez si le paramètre Check_Query_on_off est désactivé, ce qui fait que la création ne résout pas les instructions qui ne sont pas désensibilisées renvoyez directement la référence de configuration des règles de désensibilisation des résultats
| Type de règle | Les expressions régulières utilisées pour la désensibilisation régulière doivent être regroupées et les groupes cachés seront remplacés par ****. | Des groupes qui doivent être cachés | Description de la règle |
|---|
| Numéro de téléphone | (. {3}) (. *) (. {4}) | 2 | Gardez les trois premiers et les quatre derniers |
| Numéro d'identification | (. *) (. {4}) $ | 2 | Caché les quatre derniers |
| carte bancaire | (. *) (. {4}) $ | 2 | Caché les quatre derniers |
| Mail | (. *) @ (. *) | 2 | Supprimer le suffixe |
L'examinateur ne peut pas voir l'autorisation de la requête pour demander le bon de travail en cours
La liste de tâches de l'application de requête est masquée dans l'icône de message dans le coin supérieur droit. L'icône sera affichée lorsqu'il y aura des informations à examiner. Vous pouvez entrer pour afficher les données de tâches.
Les journaux lents ne s'affichent pas
- Vérifiez la configuration dans le script et gardez le contenu de configuration du nom d'hôte et de la bibliothèque principale Archer cohérente, et sont utilisés pour le filtre à Archer.
- Vérifiez si les informations de journal collectées par la table MySQL_SLOW_QUERY_REVIEW_HISTORY sont cohérentes avec le nom d'hôte
Tâche chronométrée non exécutée
- Vérifiez si le tableau connexe de Django-Apscheduler a été créé, vous pouvez utiliser
python3 manage.py migrate pour le créer
Coordonnées
- Groupe 1 du groupe 1 524233225 (complet)
- Groupe 2 du groupe 2 66983720