궁수
Inception을 기반으로 자동화 된 SQL 운영 플랫폼은 작업 오더, 감사, 타이밍 작업, 이메일, OSC 및 기타 기능을 지원합니다. 또한 MySQL 쿼리, 느린 쿼리 관리, 세션 관리 등을 구성 할 수도 있습니다.
목차
- 주요 기능
- 디자인 사양
- 온라인 경험
- 설치하다
- 달리다
- 기능적 통합
- 온라인 쿼리 및 Desensitization 쿼리
- 느린 로그 관리
- SQL 최적화 도구
- 알리바바 클라우드 RDS 관리
- Q & A
개발 언어 및 추천 환경
python3.4及以上
django1.8.17
mysql : 5.6及以上
linux : 64位linux操作系统均可
주요 기능
- 자동 검토는 SQL 발사를 시작하고, 작업 주문이 제출되고, 시작이 자동으로 검토됩니다. 검토가 통과 된 후 감사인은 수동으로 검토해야합니다.
- 수동 검토
Inception은 자동으로 검토 된 작업 주문은 다른 R & D 엔지니어 또는 R & D 관리자가 검토합니다. DBA 운영은 SQL을 실행합니다
수동 검토가 필요한 이유는 무엇입니까?
이는 운영 및 유지 보수 분야에서 온라인 운영에 대한 프로세스 인식을 따릅니다. 엔지니어가 온라인 데이터베이스 SQL을 업데이트하려면 다른 엔지니어가 확인하는 것이 가장 좋습니다. DBA는 여러 번 SQL의 비즈니스 의미를 알지 못하므로 수동 검토는 다른 R & D 엔지니어 또는 R & D 관리자가 검토하는 것이 가장 좋습니다. 이것이 아처의 디자인 개념입니다 - 롤백 문장은 롤백 데이터 디스플레이 작업 순서에 표시 될 수 있으며 롤백 작업 오더의 원 클릭 제출을 지원합니다.
- SQL을 정기적으로 실행하십시오
DBA가 승인 한 작업 주문은 정기적으로 실행할 수 있습니다. 실행 시간은 실행 전에 수정 될 수 있으며 언제든지 종료 될 수 있습니다. - PT-OSC 실행은 PT-OSC 실행 진행 상황 디스플레이를 지원하며 PT-OSC 프로세스를 중단하려면 클릭 할 수 있습니다.
- MySQL 쿼리 라이브러리, 테이블 및 키워드 자동으로 완료 쿼리 결과 설정 제한, 쿼리 결과 내보내기, 테이블 구조 디스플레이 및 다중 방지 세트 디스플레이
- MySQL 쿼리 권한 관리는 Inception Parsing Query 문을 기반으로합니다. 쿼리 권한은 테이블 레벨 쿼리 권한의 응용 프로그램, 검토 및 관리, 감사 프로세스 구성 지원 및 다단계 감사를 지원합니다.
- MySQL 쿼리 동적 탈감작은 Inception Parsing Query 문을 기반으로하며, 탈감작 필드 구성 및 탈감작 규칙 (정규 표현식)과 함께 민감한 데이터의 동적 탈감작을 달성 할 수 있습니다.
- 느린 로그 관리는 Percona-Toolkit의 PT_QUERY_DIGEST를 기반으로하여 느린 로그를 분석하고 저장하고 웹쪽에 표시합니다.
- 이메일 알림을 이메일 알림으로 구성하여 온라인 응용 프로그램에 알리고 허가 신청서, 검토 결과 등을 알리고 비정상적인 로그인에 알리는 이메일 알림을 구성 할 수 있습니다.
디자인 사양
- 합리적인 데이터베이스 설계 및 사양, 특히 MySQL 데이터베이스가 매우 필요합니다. 커널은 Oracle, DB2, SQL Server 및 기타 데이터베이스만큼 강력하지 않습니다. 당신의 강점을 극복하고 당신의 약점을 피하려면 합리적인 디자인이 필요합니다. 인터넷 산업은 성숙한 MySQL 디자인 사양을 가지고 있으며 다음과 같이 작성되었습니다. 회사가 온라인으로 가기 전에 Archer 시스템을 사용하기 전에이 사양으로 모든 백엔드 개발자를 교육하도록 독자에게 요청하십시오.
링크 https://github.com/jly8866/archer/blob/master/src/docs/mysql_db_design_guide.md를 다운로드하십시오
기본 구성 파일
Docker를 입양하십시오
- 도커 이미지, 참조 위키
- 시작 이미지 : https://hub.docker.com/r/hhyo/inception
- 궁수 이미지 : https://hub.docker.com/r/hhyo/archer
- Docker 이미지 제작 감사합니다 @
수동 설치 단계
- 환경 준비
- 코드를 로컬로 복제하거나 ZIP 패키지 다운로드
git clone https://github.com/jly8866/archer.git - Inception을 설치하십시오
프로젝트 갤러리
- Python3, 버전 번호> = 3.4 설치 (공식 모듈을 수정해야하므로 VirtualEnv 또는 Venv를 사용하여 환경을 개별적으로 분리하십시오!)
pip3 install virtualenv
virtualenv venv4archer --python=python3.4
- 필요한 관련 모듈을 설치하십시오
source venv4archer/bin/activate
pip3 install -r requirements.txt
- pymysql module 호환 된 Inceply 버전 정보 정보는 src/docker/pymysql 디렉토리의 파일을 사용하여 /path/to/python3/lib/python3.4/site-packages/pymysql/ 대신 해당 파일을 대체합니다.
시작하기 전에 준비
- 궁수 자체의 데이터베이스 테이블을 만듭니다
- 데이터베이스 및 inception_xxx 부품을 포함하여 Archer/Archer/Settings.py의 모든 주소 정보 수정
- 모델을 통해 아처 자체의 데이터베이스 테이블을 만듭니다. 기존 버전 업그레이드 인 경우 SRC/init_SQL의 변경 스크립트를 사용하여 데이터베이스 원본 V1.1.1 분기를 변경하십시오. v1.1.1-> v2.0.sql을 사용하여 원래 마스터 브랜치를 변경하십시오. 마스터-> v2.0.sql을 사용하여 새 설치를 변경하십시오. 다음 방법을 사용하여 다음 방법으로 초기화하십시오.
python3 manage.py makemigrations sql
python3 manage.py migrate
- 관리자 시스템 루트 사용자 생성 (이 사용자는 모델 관리를 위해 Django Admin에 로그인 할 수 있습니다).
python3 manage.py createsuperuser - 시작하는 방법에는 두 가지가 있습니다
(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 시작하십시오 - 위에 생성 된 관리자 계정으로 로그인에 대한 공식 액세스
http://XXXX:port/login/
다른 기능 통합
온라인 쿼리
- 설정에서 쿼리를 true로 변경하십시오
- [배경 데이터 관리]-[슬레이브 라이브러리 주소 구성] 페이지에 슬레이브 라이브러리 정보 추가
- [배경 데이터 관리]-[워크 플로 구성] 페이지 구성 검토 프로세스로 이동
- 사용자는 권한을 신청하고 검토 전달 후 온라인 문의를 수행 할 수 있습니다.
- 동적 탈감작을 사용해야하는 경우 true로 설정에서 Data_Masking_on_off를 변경하고 [Backend Data Management]-[Desensitization Configuration] 페이지로 이동하여 탈감작 규칙 및 필드를 구성하십시오.
느린 로그 관리
- SlowQuery는 설정에서 True로 변경됩니다
- 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
- src/script/mysql_slow_query_review.sql을 사용하여 Archer 데이터베이스에 느린 로그 수집 테이블 작성
- SRC/Script/Analys_slow_Query.sh를 각 모니터링 시스템에 배포하십시오. 스크립트에서
hostname="${mysql_host}:${mysql_port}" Archer Main Library의 구성 정보와 일치합니다. 그렇지 않으면 관련 레코드가 필터링되지 않습니다.
sqladvisor 최적화 도구
- sqladvisor, 프로젝트 주소를 설치하십시오
- 구성 파일 Sqladvisor를 프로그램 경로로 수정하십시오. '/opt/sqladvisor/sqladvisor/sqladvisor'와 같은 경로를 완료해야합니다.
알리바바 클라우드 RDS 관리
- 구성 파일 aliyun_rds_manage = true를 수정하십시오
- 모듈을 설치하십시오
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
- [Backend Data Management]-[ALI Cloud Certification Information] 페이지에서 Alibaba Cloud 계정의 Accesskey 정보를 추가하고 서비스를 다시 시작하십시오.
- [Background Data Management]-[ALI Cloud RDS 구성] 페이지에서 인스턴스 정보를 추가하여 프로세스 관리 및 Alibaba Cloud RDS의 느린 로그 관리를 실현합니다.
관리자 백엔드 강화, 무자비한 크래킹
- 패치 디렉토리에서 이름은 django_1.8.17_admin_secure_archer.patch입니다
- 명령을 사용하십시오
patch python/site-packages/django/contrib/auth/views.py django_1.8.17_admin_secure_archer.patch
통합 된 LDAP
- 구성 파일 수정 ENABLE_LDAP = TRUE, 관련 모듈을 설치하고 LDAP 계정 로그인을 활성화하고 CentOS를 예로 들어 보겠습니다.
yum install openldap-devel
pip install django-auth-ldap==1.3.0
- ldaps가 사용되어 자체 서명 된 인증서 인 경우 설정에서 Auth_ldap_global_options의 주석을 열어야합니다.
- 설정에서 Auth_ldap으로 시작하는 구성은 자체 LDAP에 따라 수정해야합니다.
시스템 경험
경험하려면 클릭하십시오
| 역할 | 계정 | 비밀번호 |
|---|
| 관리자 | 궁수 | 궁수 |
| 엔지니어 | 엔지니어 | 궁수 |
| 리뷰어 | 감사 | 궁수 |
| DBA | DBA | 궁수 |
몇 가지 문제가 해결되었습니다
오류 로그를 봅니다
/tmp/default.log & /tmp/archer.err
페이지 스타일 표시 예외
- Runserver/Debug.sh가 시작됩니다
디버그는 설정에서 닫혀 있습니다. - nginx+gunicorn/startup.sh 시작
nginx의 정적 자원 구성이 잘못되었습니다 location /static {
alias /archer/static; #此处指向settings.py配置项STATIC_ROOT目录的绝对路径,用于nginx收集静态资源,一般默认为archer按照目录下的static目录
}
사용자 관리
- 때때로 사용자 오류는 nginx+gunicorn/startup.sh에 의해보고됩니다. 다중 노동자 배포가 발생할 수 있습니다. 현재 문제는 해결되지 않았습니다.
- 로그인 할 수 없습니다 (사용자 이름과 비밀번호가 올바른지 확인)
사용자 is_active 필드가 1인지 확인하십시오
SQL은 온라인입니다
클러스터에 데이터베이스가 표시되지 않습니다
Archer는 기본적으로 일부 시스템 데이터베이스를 필터링하고 필터 목록은 'information_schema', 'performance_schema', 'mysql', 'test', 'sys' 입니다.
검토자는 검토 자/DBA 역할이 아닌 유효한 사용자를 보여주지 않습니다.
검토가 통과 된 후에 실행 버튼이 없습니다.
Archer의 SQL 발사 프로세스는 : 엔지니어는 SQL-> Auditor Review-> DBA 실행을 제출합니다. 감사인은 자신의 검토에 속하는 데이터 만 검토 할 수 있으며 DBA는 모든 데이터를 실행합니다.
SQL 오류를 감지합니다
- int ()에 대한 유효하지 않은 문자 10 : 'inception2'
Inception 버전 정보와 호환되도록 PymySQL을 조정하십시오.
src/docker/pymysql 디렉토리에서 파일을 사용하여 /path/to/python3/lib/python3.4/site-packages/pymysql/ directory의 파일을 바꾸십시오. - 잘못된 소스 정보
비밀번호는 포함 할 수 없습니다. - 시작 명세서로 시작해야합니다
Python3의 pymysql 모듈은 Show 경고 명세서를 Inception으로 보냅니다. 궁수는 /path/to/python3/lib/python3.4/site-packages/pymysql/ 디렉토리의 파일이 로그에서/satp/to/python3/lib/python3.4/site-packages/pymysql/ directory의 파일을 교체하는 데 사용된다고보고합니다. - 잘못된 데이터베이스 이름 '' '
Inception Check는 하위 쿼리를 지원하지 않습니다 - 잘못된 원격 백업 정보
Inception은 백업 라이브러리에 연결할 수 없습니다
롤백 문을 생성 할 수 없습니다
- 구성 파일에서 Inception과 관련된 구성을 확인하십시오.
- Inceple 감사 사용자 및 백업 사용자의 권한을 확인하고 권한 참조
— 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'
- Binlog 형식을 확인하십시오. 행이 필요합니다. Binlog_row_image가 가득 찼습니다.
- DML 테이블에 기본 키가 있는지 확인하십시오
- 명령문이 데이터에 영향을 미치는지 확인하십시오
- 백업 라이브러리가 AutoCommit에 활성화되어 있는지 확인하십시오
- 연속 테이블 업데이트 명령문인지 확인하십시오
- 실행 인스턴스가 MySQL인지 확인하십시오
탈감작 규칙은 유효하지 않습니다
- Desensitization 필드가 발생하는지 확인하십시오 (사례에 민감한 지)
- 탈감작 규칙의 정규 표현이 데이터와 일치 할 수 있는지 확인하십시오. 일치하지 않으면 원래 결과가 반환됩니다.
- check_query_on_off 매개 변수가 꺼져 있는지 확인하여, Inception이 탈감작되지 않은 진술을 직접 반환하지 않는 진술을 해결하지 못하도록합니다. 결과 탈감작 규칙 구성 참조.
| 규칙 유형 | 정기적 인 탈감작에 사용되는 정기적 인 표현은 그룹화되어야하며 숨겨진 그룹은 ****로 대체됩니다. | 숨겨져야하는 그룹 | 규칙 설명 |
|---|
| 전화 번호 | (. {3}) (.*) (. {4}) | 2 | 처음 세 개와 마지막 4 개를 유지하십시오 |
| ID 번호 | (.*) (. {4}) $ | 2 | 마지막 4 개를 숨겼습니다 |
| 은행 카드 | (.*) (. {4}) $ | 2 | 마지막 4 개를 숨겼습니다 |
| 우편 | (.*)@(.*) | 2 | 접미사를 제거하십시오 |
검토자는 보류중인 작업 명령을 신청할 쿼리 허가를 볼 수 없습니다.
쿼리 권한 응용 프로그램 목록은 오른쪽 상단의 메시지 아이콘에 숨겨져 있습니다. 검토 할 정보가있을 때 아이콘이 표시됩니다. 할 일 데이터를보기 위해 입력 할 수 있습니다.
느린 로그는 표시되지 않습니다
- 스크립트의 구성을 확인하고 호스트 이름 및 Archer Main Library의 구성 내용을 일관성있게 유지하고 Archer가 필터로 사용됩니다.
- mysql_slow_query_review_history 테이블에서 수집 한 로그 정보가 호스트 이름과 일치하는지 확인하십시오.
시간이 지정된 작업이 실행되지 않았습니다
- Django-Apscheduler의 관련 테이블이 생성되었는지 확인하면
python3 manage.py migrate 를 만들 수 있습니다.
연락처 정보
- QQ 그룹 1 그룹 524233225 (전체)
- QQ 그룹 2 그룹 669833720