关注"一猿小讲"的猿友们都知道,前段时间我在《一文讲懂线上应用系统监控》给大家简单提到了日志归集,埋下了伏笔,今天的这篇分享是来给大家还债的,主要从整体到局部,深入了解一下日志归集。如果你正在困惑于每天登录服务器查询业务日志的繁琐,或正在寻找一个业务日志归集的方案,那么就请跟紧我的脚步,莫掉队。
01. 放空大脑,去思考
众所周知,生活中每做一件大事要有有计划有步骤的进行。日志归集也不例外,就让我们放下陈谷子烂芝麻的琐事,静下来随着我思考一二。
“日志归集”四个字,从中我们看到操作的对象是:日志;进行的动作是:归集。
那该如何做呢?
之前的分享曾讲过,日志采集的方式、采集的日志如何存储、采集的数据展示分析等几个环节,并提了一下当下最流行的开源轮子EFK,如果你是第一次听到这些,建议看看我前段时间分享的《一文讲懂线上应用系统监控》那篇文章。今天主要是实战,理论性的东西点到为止。
02.拒绝空想,就是干,傻瓜也能用 EFK
一切技术轮子都是纸老虎。有时,发现打破纸老虎的最佳方法,莫过于亲身实践。那就让我们行动起来,真枪实弹从 0 到 1 搭建一个轻量级的日志采集服务。
Filebeat
能轻松地将你关心的数据推送至你想存储的地方,让日志采集的事情变的简单化。
选择适合自己的,才是最好的。Filebeat 对不同的系统提供不同的可执行版本。下载最新版本(Mac系统进行演示):
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.1.1-darwin-x86_64.tar.gz
要采集谁。
vi filebeat-7.1.1-linux-x86_64/filebeat.yml
往哪儿推。
vi filebeat-7.1.1-linux-x86_64/filebeat.yml
由于本次进行本机演示操作,所以默认地址配置就满足需求。
一键启动。
./filebeat -e -c filebeat.yml
Elasticsearch
可以集中存储我们的数据,而且快到不可思议的查询。
提供千万款,总有一款适合你。下载最新版本(Mac系统进行演示)
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.1.1-darwin-x86_64.tar.gz
一键启动。
bin/elasticsearch
论成败。
curl http://localhost:9200/
Kibana
能够对 Elasticsearch 中的数据进行可视化。集可点击、可拖动、可挖掘本领于一身的可视化组件高手。
乐享 Kibana。纵佳丽三千,择其一而终老。下载最新版本(Mac系统进行演示)
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.1.1-darwin-x86_64.tar.gz
一键启动。
bin/kibana
启动初恋的感觉。
一探究竟。
在浏览器中访问 http://localhost:5601,效果图如下。
到此采用 EFK 简易的日志采集架构就完成了。神奇的是这款技术轮子,还真能把采集的日志展示出来了,自此鸟枪换炮,妈妈再也不用担心我因为查询日志下班晚回家吃饭啦。
03. 带你牛,带你飞
站在巨人的肩膀上。
由于 Kibana 功能比较多,有太多的功能用不到,相对还是比较笨重。所以公司往往都进行二次开发轻量级的查询组件。
其中实现思路特别简单:分析 kibana 日志搜索向后台发送的请求;摘取 elasticsearch 请求相关API;按照公司需求提供个性化查询展示页面。
轻量级 vs 重量级。
如果是轻量级的采集方案,那么 EFK + 定时清理 elasticsearch 的脚本就够用(目前线上采取的方案);如果是重量级 + 高可用,那么在Fliebeat 与 Elasticsearch 中间加上一个队列缓冲组件会比较靠谱。
04. 写在最后
拒绝温水煮青蛙,拒绝一味的 CRUD,如果平时工作中遇到痛点不妨稍微思考一二,看看有没有更好的技术轮子可以引进,说不定会提高工作效率,那么就可以抽出更多时间去喝咖啡、抽出更多时间去忙点自己的事情。