MySQL의 query_log를 시각화하는 part2
6318 단어 MySQLEmbulkElasticsearch
어제는 복어( @ Atsuko Fukui )의 Retty 음성 검색을 시도했습니다. 이었습니다.
이번은, 1일째에 쓴 MySQL log를 시각화의 계속을 써 가고 싶습니다.
설마, 이렇게 빨리 계속을 쓰는 날이 온다고는. . .
방법
RDS에서 slow_query_log 얻기
RDS에서 로그를 얻는 방법은 DB에 쿼리를 던져 얻는 방법과,
File로 내뿜는 것을 얻는 두 가지 방법이 있습니다.
이번에는 DB에 저장된 것에 대해 Query를 던져 가져옵니다.
이전에는 filebeat를 사용하여 로그를 얻었지만 RDS에서 얻는 방법을 잃어 버렸기 때문에 Embulk에서 로그를 얻는 방법으로 변경했습니다.
Embulk 설치
다음 명령을 실행하여 설치를 수행합니다.
curl --create-dirs -o ~/.embulk/bin/embulk -L "http://dl.embulk.org/embulk-latest.jar"
chmod +x ~/.embulk/bin/embulk
echo 'export PATH="$HOME/.embulk/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
플러그인 설치
RDS는 MySQL에서 읽어들이기 때문에 MySQL용 플러그인을 설치한다.
또, Elasticsearch에 취득한 로그를 날리기 위해서, 그 플러그인도 인스톨 한다.
embulk mkbundle bundle
vim ~/bunble/Gemfile
~~ <以下2行を追加> ~~~
gem 'embulk-input-mysql'
gem 'embulk-output-elasticsearch_ruby'
~~~ <ここまで> ~~~~
embulk bundle
설치된 것을 확인한다.
[ec2-user@ip-172-19-76-160 ~]$ embulk bundle list -b bundle
2016-12-02 13:39:15.469 +0000: Embulk v0.8.15
Gems included by the bundle:
* bundler (1.10.6)
* elasticsearch (5.0.0)
* elasticsearch-api (5.0.0)
* elasticsearch-transport (5.0.0)
* embulk (0.8.15)
* embulk-input-mysql (0.8.0)
* embulk-output-elasticsearch_ruby (0.1.1)
* excon (0.54.0)
* faraday (0.10.0)
* liquid (3.0.6)
* msgpack (0.7.6)
* multi_json (1.12.1)
* multipart-post (2.0.0)
* rjack-icu (4.54.1.1)
[ec2-user@ip-172-19-76-160 ~]$
YAML 파일 만들기
다음 파일을 만듭니다.
~/bundle/rds_slowlog.ymlin:
type: mysql
host: ***************.ap-northeast-1.rds.amazonaws.com
user: user-name
password: password
database: mysql
query: |
SELECT
DATE_FORMAT(start_time, '%Y-%m-%d %T') AS query_start_time,
user_host,
SECOND(query_time) AS query_system_time,
SECOND(lock_time) AS query_lock_time,
rows_sent,
rows_examined,
db,
sql_text
FROM mysql.slow_log_backup
out:
type: elasticsearch_ruby
index: slowquery-%Y.%m.%d
index_type: slowquery
nodes:
- host: 127.0.0.1
다음 명령을 실행하여 YAML 파일의 동작을 확인합니다.
embulk preview bundle/rds_slowlog.yml -b bundle
Elasticsearch로 가져오기
다음 명령을 실행하여 Elasticsearch로 데이터를 가져옵니다.
mysql -uuser -p -hretty-********.ap-northeast-1.rds.amazonaws.com --execute 'CALL mysql.rds_rotate_slow_log;'
embulk run bundle/rds_slowlog.yml -b bundle
Elasticsearch 설정
템플릿 설정
취득한 형태에 맞추어 템플릿을 설정한다.
{
"slowquery": {
"template": "slowquery-*",
"mappings": {
"slowquery": {
"properties": {
"query_system_time": {
"type": "float"
},
"rows_sent": {
"type": "integer"
},
"rows_examined": {
"type": "integer"
},
"query_start_time": {
"format": "yyyy-MM-dd HH:mm:ss",
"type": "date"
},
"query_lock_time": {
"type": "float"
},
"user_host": {
"index": "not_analyzed",
"type": "string"
},
"sql_text": {
"index": "not_analyzed",
"type": "string"
},
"db": {
"index": "not_analyzed",
"type": "string"
}
}
}
},
}
}
Kibana로 시각화하기
여기에서 취향에 맞게 시각화 해보세요.
내 대시보드는 다음과 같습니다.
요약
RDS로부터 데이터를 취득하는데 의외로 시간이 걸려 버려 괴로웠습니다만, 순서가 정리되었으므로 편해질까 생각합니다.
Elasticsearch에 던지면 fluentd에서도 좋았을 것이라고 생각했습니다만, DB에의 부하가 무서웠기 때문에 갱신 빈도를 임의로 설정할 수 있는 Embulk 를 선택했습니다.
비주얼라이즈가 그다지 잘 되어 있지 않으므로, 깨끗하게 할 수 있는 분은 가르쳐 주세요! !
Reference
이 문제에 관하여(MySQL의 query_log를 시각화하는 part2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/takumi-suzuki/items/3ebbde82f29b018e75dd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
curl --create-dirs -o ~/.embulk/bin/embulk -L "http://dl.embulk.org/embulk-latest.jar"
chmod +x ~/.embulk/bin/embulk
echo 'export PATH="$HOME/.embulk/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
embulk mkbundle bundle
vim ~/bunble/Gemfile
~~ <以下2行を追加> ~~~
gem 'embulk-input-mysql'
gem 'embulk-output-elasticsearch_ruby'
~~~ <ここまで> ~~~~
embulk bundle
[ec2-user@ip-172-19-76-160 ~]$ embulk bundle list -b bundle
2016-12-02 13:39:15.469 +0000: Embulk v0.8.15
Gems included by the bundle:
* bundler (1.10.6)
* elasticsearch (5.0.0)
* elasticsearch-api (5.0.0)
* elasticsearch-transport (5.0.0)
* embulk (0.8.15)
* embulk-input-mysql (0.8.0)
* embulk-output-elasticsearch_ruby (0.1.1)
* excon (0.54.0)
* faraday (0.10.0)
* liquid (3.0.6)
* msgpack (0.7.6)
* multi_json (1.12.1)
* multipart-post (2.0.0)
* rjack-icu (4.54.1.1)
[ec2-user@ip-172-19-76-160 ~]$
in:
type: mysql
host: ***************.ap-northeast-1.rds.amazonaws.com
user: user-name
password: password
database: mysql
query: |
SELECT
DATE_FORMAT(start_time, '%Y-%m-%d %T') AS query_start_time,
user_host,
SECOND(query_time) AS query_system_time,
SECOND(lock_time) AS query_lock_time,
rows_sent,
rows_examined,
db,
sql_text
FROM mysql.slow_log_backup
out:
type: elasticsearch_ruby
index: slowquery-%Y.%m.%d
index_type: slowquery
nodes:
- host: 127.0.0.1
embulk preview bundle/rds_slowlog.yml -b bundle
mysql -uuser -p -hretty-********.ap-northeast-1.rds.amazonaws.com --execute 'CALL mysql.rds_rotate_slow_log;'
embulk run bundle/rds_slowlog.yml -b bundle
템플릿 설정
취득한 형태에 맞추어 템플릿을 설정한다.
{
"slowquery": {
"template": "slowquery-*",
"mappings": {
"slowquery": {
"properties": {
"query_system_time": {
"type": "float"
},
"rows_sent": {
"type": "integer"
},
"rows_examined": {
"type": "integer"
},
"query_start_time": {
"format": "yyyy-MM-dd HH:mm:ss",
"type": "date"
},
"query_lock_time": {
"type": "float"
},
"user_host": {
"index": "not_analyzed",
"type": "string"
},
"sql_text": {
"index": "not_analyzed",
"type": "string"
},
"db": {
"index": "not_analyzed",
"type": "string"
}
}
}
},
}
}
Kibana로 시각화하기
여기에서 취향에 맞게 시각화 해보세요.
내 대시보드는 다음과 같습니다.
요약
RDS로부터 데이터를 취득하는데 의외로 시간이 걸려 버려 괴로웠습니다만, 순서가 정리되었으므로 편해질까 생각합니다.
Elasticsearch에 던지면 fluentd에서도 좋았을 것이라고 생각했습니다만, DB에의 부하가 무서웠기 때문에 갱신 빈도를 임의로 설정할 수 있는 Embulk 를 선택했습니다.
비주얼라이즈가 그다지 잘 되어 있지 않으므로, 깨끗하게 할 수 있는 분은 가르쳐 주세요! !
Reference
이 문제에 관하여(MySQL의 query_log를 시각화하는 part2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/takumi-suzuki/items/3ebbde82f29b018e75dd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
RDS로부터 데이터를 취득하는데 의외로 시간이 걸려 버려 괴로웠습니다만, 순서가 정리되었으므로 편해질까 생각합니다.
Elasticsearch에 던지면 fluentd에서도 좋았을 것이라고 생각했습니다만, DB에의 부하가 무서웠기 때문에 갱신 빈도를 임의로 설정할 수 있는 Embulk 를 선택했습니다.
비주얼라이즈가 그다지 잘 되어 있지 않으므로, 깨끗하게 할 수 있는 분은 가르쳐 주세요! !
Reference
이 문제에 관하여(MySQL의 query_log를 시각화하는 part2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/takumi-suzuki/items/3ebbde82f29b018e75dd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)