文章目录
故事背景
1. 需求
收集腾讯云MySQL实例的慢查询,并展示
2. 问题拆解
- 调用腾讯云API接口拉取slowlog文件
- 使用
Logstash
或Filebeat
收集慢查询
3. 难点/处理方法
难点
每次拉取慢查询只能是全量拉取
本人编程能力比较差,仅仅提供粗糙的处理方式
处理方法
腾讯云的API并不会下载慢查询文件,只会打印文件大小,下载地址等信息
# 当前存在这三个文件
slcur:当前最新慢查询日志
sl2elk:最终会被elk采集的慢查询日志(可以认为是跟slcur数据保持一致)。
slold:始终是上一个版本的慢查询日志
# 调用API获取当前慢查询日志文件大小
if slcur_size > sl2elk_size: # 如果当前慢查询大小比sl2elk的大,则说明需要更新(此时并没有真正下载最新的慢查询日志)
mv slcur slold # 将当前的慢查询移动到存放老版本的文件夹中
wget slcur # wget重新获取最近的慢查询日志
num=`cat slold | wc -l` # 从老版本慢查询日志中慢查询的条数
# 此时的slcur是比sl2elk完整的,所以要将差异的部分追缴到sl2elk中
sed -n "$num,$p" slcur >> sl2elk # 追加差异部分日志到sl2elk中
可能有点2,希望得到大佬们的指导,谢谢。
ELK收集MySQL SlowLog
Elasticsearch、Kibana的安装部署不做赘述,重点放在Logstash和Filebeat
方案一:Logstash收集
input {
file {
type => "xxxx"
path => "/PATH/slowlog_20200204.log"
start_position => beginning
codec => multiline {