基于ELK实现代理层的慢日志系统

前文介绍过代理层,代理层平台解决了多租户模式下的MySQL高可用能力。由于代理层上的业务众多,一旦出问题,就会影响大片的业务,所以在质量方面投入的比较多的精力,它的运维和监控一直是考虑的重点。业务问题的可追踪能力也很关键,本篇章主要介绍一下代理层的慢日志平台,业务方和DBA都能快速的查询到系统出现的慢日志,对于业务问题和系统故障定位都会提供助力。

生成慢日志

代理层平台不依赖于MySQL的慢日志,它自己会生成慢日志,主要从以下几个方面考虑:
代理层毕竟是业务和MySQL之间加了一层,会有一定的性能损耗;
代理层解决了跨机房的问题,写操作只能到主库,所以在多机房部署的情况下,会有代理层跨机房访问MySQL,代理层自己生成日志,可以把跨机房网络问题造成的慢日志记录下来;
可以自己决定慢日志的格式,定制感兴趣的元素。

慢日志格式:

时间|代理层IP|业务名|客户端IP|账号|发起机房|目标机房|是否自动提交|操作模式|DB Name|MySQL IP|MySQL Port|耗时|SQL

日志内容例子如下:
1492013991141|10.20.30.40|test_business|3.4.5.6|user|广州|深圳|false|0|db_test|6.7.8.9|3306|22539|delete from abc where ttt = ''

日志内容非常详尽,基本涵盖了所有可能的元素。笔者采用了纯文本的格式来存储满日志,出于以下几个目的:

  1. 不需要额外的工具就可以随时查看;
  2. 各种开源的日志收集工具都能支持;
    为了采用纯文本来存储,SQL语句必须进行格式化:
  3. 去掉不可见字符;
  4. 把回车换行符替换成空格;
  5. 超长SQL语句截断;

日志平台架构

日志平台架构如下所示:

graph LR
代理层主机1-LogStash--> ES集群
代理层主机2-LogStash--> ES集群
代理层主机...LogStash --> ES集群
代理层主机N-LogStash--> ES集群
ES集群--> Kibana
ES集群--> DBMS
Paste_Image.png

日志收集

在每台代理层主机上部署LogStash,用于收集日志,根据指定的慢日志格式,为了实现

input {
file {
type => "slowlog"
path => ["/data/proxy-layer/slowlog/*"]
}
}

filter {
if [type] == "slowlog" {
ruby {
init => "@kname = ['time', 'host', 'business', 'clientip', 'user', 'fromidc', 'toidc','autcommit', 'mode', 'db', 'mysqlip', 'mysqlport', 'used', 'sql' ]"
code => "event.remove('host') ; event.append(Hash[@kname.zip(event['message'].split('|', @kname.size()))]) "
}
}
date {
match => ["time", "UNIX_MS"]
target => "@timestamp"
remove_field => ["message", "path"]
}
}

output {
elasticsearch { hosts => ["es.abc.com:9200"] }
stdout { codec =>rubydebug }
}

关于上面的logstash配置文件,主要有以下几点解释一下:

  • 日志类型配置为:slowlog,将会在ES中自动生成slowlog开头的索引;
  • 删除logstash自动生成的host字段,因为,我们的主机太多,所以每台主机的hostname基本相同,所以这个host字段基本无效;
  • 采用慢日志中的代理层主机IP作为host字段;
  • 时间戳字段不用Logstash生成,而是采用慢日志中的时间戳;
  • 删除path字段,基本没用;

慢日志展示

代理层缺省设置超过1秒为慢日志,每个业务可以自己设置超时时间,毫秒为单位,现在随便找一个测试业务,执行 SELECT sleep(3);

等待SQL语句执行完毕,我们可以在DBMS中查看慢日志了:

image
image

本人只截取了测试用的SQL,仅供参考。

至于Kibana的展示,这里就不细说了,网上有更多详细的说明。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容