暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Clicktail部署拉取慢日志

原创 冯刚 2022-10-09
969

前言

该文章介绍在自建(CentOS7)MySQL5.7上部署Clicktail,并拉取MySQL慢日志数据,写入到ClickHouse库表的实施过程。

1 环境

1.1 拓扑图


1.2 环境信息

主机名IP端口服务配置文件
mysql001192.168.6.1143306MySQL5.7.22

/etc/mysql57/my_3306.cnf
/data/mysql/mysql57_3306/slowlog/slow.log

Clicktail慢日志进程/etc/clicktail/clicktail_slow_3306.conf
/data/app/clicktail/state/slow_3306.leash.state
Clicktail审计日志进程/etc/clicktail/clicktail_audit_3306.conf
/data/app/clicktail/state/audit_3306.leash.state
clickhouse001192.168.6.88123clickhouse客户端、服务端

/etc/clickhouse-server/config_9000.xml
/etc/clickhouse-server/users01.xml
/etc/clickhouse-server/metrika01.xml

2 部署过程

2.1 安装clicktail软件

curl -s https://packagecloud.io/install/repositories/Altinity/clickhouse/script.rpm.sh | bash
yum search clicktail
yum info clicktail
yum -y install clicktail

也可以通过rpm包安装

下载路径:https://packagecloud.io/app/Altinity/clickhouse/search?q=clicktail

yum install clicktail-1.0.20180401-1.x86_64.rpm

2.2 安装相关目录

[ root@mysql001:/data/app ]# mkdir -p /data/app/clicktail/state/

2.3 修改clicktail配置文件

/etc/clicktail/clicktail-example.conf 为默认配置文件,可以看下参数说明。也可以通过clicktail --help看。

新建配置文件clicktail_slow_3306.conf,是为了后面拉取审计日志,和审计日志配置文件clicktail_audit_3306.conf区分开。

clicktail进程可能会占用较大CPU,需要通过NumSenders、BatchFrequencyMs、BatchSize等参数控制拉取的频率和大小,避免引起线上事故。

[ root@mysql001:/data/app ]# vim /etc/clicktail/clicktail_slow_3306.conf
[Application Options]
APIHost = http://192.168.6.8:8123/   --clickhouse地址
NumSenders = 1
BatchFrequencyMs = 10000
BatchSize = 1000

[Required Options]
ParserName = mysql
LogFiles = /data/mysql/mysql57_3306/slowlog/slow.log   --MySQL慢日志文件路径
Dataset = clicktail.mysql_slow_log                     --clickhouse上存储MySQL慢日志的库表

[Tail Options]
;ReadFrom = beginning
;Stop = false
StateFile = /data/app/clicktail/state/slow_3306.leash.state

[MySQL Parser Options]
Host = localhost:3306    --MySQL地址端口
User = clicktail_r       --MySQL上创建用户,用来拉取慢日志
Pass = 123456

2.4 MySQL创建用户

create user 'clicktail_r'@'localhost' identified by '123456';
GRANT SELECT,REPLICATION CLIENT ON *.* TO 'clicktail_r'@'localhost';
flush privileges;

2.5 MySQL慢日志

慢日志文件应做好每日切割(logrotate)。

[ root@mysql001:/data/mysql/mysql57_3306/slowlog ]# ll
total 10656
-rw-r----- 1 mysql mysql 6899072 Oct  9 11:09 slow.log
-rw-r----- 1 mysql mysql  777714 Oct  5 03:08 slow.log-20221005.gz
-rw-r----- 1 mysql mysql  811916 Oct  6 03:07 slow.log-20221006.gz
-rw-r----- 1 mysql mysql  820048 Oct  7 03:20 slow.log-20221007.gz
-rw-r----- 1 mysql mysql  780921 Oct  8 03:15 slow.log-20221008.gz
-rw-r----- 1 mysql mysql  806132 Oct  9 03:15 slow.log-20221009.gz
mysql> show variables like '%slow_query_log_file%';
+---------------------+-------------------------------------------+
| Variable_name       | Value                                     |
+---------------------+-------------------------------------------+
| slow_query_log_file | /data/mysql/mysql57_3306/slowlog/slow.log |
+---------------------+-------------------------------------------+
1 row in set (0.01 sec)
mysql> set global log_throttle_queries_not_using_indexes=1000;

2.6 ClickHouse建库表

通过下面sql脚本在clickhouse创建库表,用来存放慢日志数据。(该创建库表脚本及方法只针对clickhouse单实例,集群的话需要改造

建库脚本来源:https://github.com/Altinity/clicktail/blob/master/schema/db.sql

建表脚本来源:https://github.com/Altinity/clicktail/blob/master/schema/mysql.sql

手动连接clickhouse执行命令,或者执行sql文件

cat ./db.sql | clickhouse-client --port=9000 --multiline
cat ./mysql.sql | clickhouse-client --port=9000 --multiline

2.7 clicktail拉取存量慢日志

clicktail进程启动后,默认只会从当前时间开始拉取增量慢日志数据,如果只需要增量,跳过该步骤,直接执行2.8步骤。如果也需要slow.log文件里存量数据,可以按照下面方法操作。(--backfill控制拉取全量

[ root@mysql001:/data/app ]# clicktail --api_host=http://192.168.6.8:8123/ --dataset='clicktail.mysql_slow_log' --parser=mysql --mysql.user=clicktail_r --mysql.pass=123456 --file=/data/mysql/mysql57_3306/slowlog/slow.log --backfill --send_batch_size=5 --poolsize=5 

clicktail进程可能会占用较大CPU,需要通过--send_batch_size=5 --poolsize=5等参数控制,避免引起线上事故。

2.8 启动clicktail持续拉取增量慢日志

[ root@mysql001:/etc/logrotate.d ]# cat /etc/systemd/system/clicktail_slow_3306.service 
[Unit]
Description=for slow log to clickhouse
After=network.target

[Service]
ExecStart=/usr/bin/clicktail -c /etc/clicktail/clicktail_slow_3306.conf
KillMode=process
Restart=on-failure
User=root
Group=root

[Install]
Alias=clicktail_slow_3306 clicktail_slow_3306.service
systemctl start clicktail_slow_3306.service

3 附录

clicktail安装参考:https://github.com/Altinity/clicktail

clicktail介绍:https://altinity.com/blog/2018/3/12/clicktail-introduction

最后修改时间:2022-11-09 10:51:38
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论