浅谈ELK日志分析平台
链接:https://zhuanlan.zhihu.com/p/22104361
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
小编的话
“技术干货”系列文章意在分享技术牛人的知识干货,每期主题都不一样哟!期待各位读者在文后发表留言,来一场技术上的交流和思想上的碰撞!
2016年7月20日,本期品高云公开课由叶春草带来“可视化案发现场——浅谈ELK日志分析平台”的分享。
分享嘉宾

叶春草现就职于品高云软件技术支持工程师。就职一年来,曾参与过广州地铁聆客、公司聆客、深圳公安局聆客的数据库迁移、升级及其他服务器的监控运维、日志分析系统搭建等,主要负责聆客相关运维。
分享正文
在谈ELK前,先来谈谈我们品高聆客和ELK之间的关系。
BingoLink(品高聆客)是一款集“应用开发、整合接入、应用管理、安全保障、社交平台”于一体的MEAP平台。用BingoLink构建企业的移动化平台,满足企业在移动互联网年代移动应用开发、现有业务系统的整合接入、应用管理及运营、企业内部沟通协作等需求的实现。
ELK在聆客中,发挥的作用和价值就在于:
1、可提高用户响应速度。通过ELK筛选出数据库慢查询日志,开发再对语句进行优化,则可提高数据库响应时间,进而提高用户响应时间。
2、可提高聆客软件可用率。当有故障时,可用ELK快速查询所需要的日志,查看故障原因,缩短故障定位时间,进而提高可用率。
3、可总结聆客网页的正常状态百分比。通过ELK筛选nginx状态码结果,绘制状态码扇形图,可清晰知道网页访问有多少是正常的。
4、可定位聆客用户的地图分布。通过ELK抓取用户访问的公网IP,再绘制Tile map地图,则可在地图上清楚看来聆客在全国各地的分布,定位客户来源。
5、可优化聆客系统。通过开发、运维定期查看ELK上的图表、周报,可发现隐藏问题(例如某个nginx路径访问持续过长、数据库有暂未影响功能的error等),进行排除,从而减少潜在的隐患,及优化系统。
那么问题来了,ELK日志分析平台是什么?
首先来看一下传统的日志查找方式:当有客户报障时,需要:
1、登录服务器
ssh ops@10.1.1.1 ssh ops@10.1.1.1
ssh ops@10.1.1.1 …
2、找到位置
cd /apps/logs/nginx/; cd /apps/logs/mysql/;
cd /apps/logs/docker; cd /apps/logs/java/; …… ……
3、查看日志
head tail grep wc awk count cut …… ……
因此,传统的日志架构存在的以下若干缺点:
开发人员无权登录,经过运维周转费时费力
日志数据分散在多个系统,难以查找
日志数据量大,查询速度慢
一个调用会涉及多个系统,难以在这些系统的日志中快速定位数据
数据不够实时
……
一、日志架构的演变:
传统的日志架构,需要运维人员强大的正则功底,对日志运用shell命令,例如cat tail grep awk sed等,对日志进行处理,再筛选出自己想要的结果或寻找关键字。
有了ELK后,对运维和开发处理日志的要求降低,只需要在web界面上简单的操作,就可以找到自己想要的数据,并进行画图

二、那么ELK名称怎么由来呢?
首字母为该管理系统三个主要软件:Elasticsearch、Logstash、Kibana。这三个并非该管理系统的全部组成,而且还可以添加Redis,kafka,filebeat等软件
它们各自的功能大概可以这样概述:
E
实时分析、实时检索、海量存储
建立索引,以便日后快速查看、搜索、分析
L
数据流传输、日志结构化
K
分析统计、酷炫图表
关于ELK的配置
E配置:
主要配置数据目录、日志目录、绑定IP和端口
path.data: /apps/data/
path.logs: /apps/logs/elasticsearch/
network.host: 172.17.96.9
http.port: 9200
L配置:
logstash的配置比较复杂,由三个部分组成:input,filter,output

K配置:
主要配置elasticsearch的地址,K的数据目录、日志目录、绑定IP和端口
server.host: "172.17.96.8“
server.port: 5601
elasticsearch.url: "http://172.17.96.9:9200"
pid.file: /apps/run/kibana/kibana.pid
logging.dest: /apps/logs/kibana/kibana.log
三、ELK启动
service方式,当你的安装方式是rpm包或配置官方仓库时:
1、service方式(rpm包,yum安装时)
service $PROG start
nohup+&在后台启动(源码安装时)
2、nohup方式(源码包安装时)
nohup $COMMAND &
demontools(supervisord等启动进程的程序
3、supervisord (源码包安装时)
service supervisord start
四、日志匹配
1、过滤器:这里是选取几个过滤器进行讲解,更多的过滤器,可以在官网上继续学习
date时间处理
date时间格式
date {
match => [ "timestamp" , "dd/MMM/YYYY:HH:mm:ss Z" ]
}
2、grok正则捕获
grok正则捕获
grok{
pattern => ["%{TIMESTAMP_ISO8601:Time} - %{IP:serverIP} %{BASE10NUM:port} %{BASE10NUM:relay:int}"]
}
grok {
patterns_dir => ["/apps/conf/logstash/patterns"]
match => {
"message" => "%{MYSQLSLOW}"
}
3、mutate数据修改
mutate数据修改
mutate { convert => ["bytes","integer"] }
mutate { convert => [“time","float"] }
mutate { split => ["re_path", "/"] }
4、rubby灵活处理
ruby灵活处理
ruby {
init =>"@kname= ['re_path','re_args']"
code =>"event.append(Hash[@kname.zip(event['request'].split('?'))])"
}
五、日志展示

后续:
1、监控方面:
进程和端口存活(各个软件)
磁盘空间(Elasticsearch的数据目录,logstash的日志目录等
……
2、优化方面:
Elasticsearch 中,JVM使用OS的max-open-files设置、索引调整、文件刷新时间等
Logstash的日志部分无用段去除、filter worker数量等
浅谈ELK日志分析平台的更多相关文章
- 1002-谈谈ELK日志分析平台的性能优化理念
在生产环境中,我们为了更好的服务于业务,通常会通过优化的手段来实现服务对外的性能最大化,节省系统性能开支:关注我的朋友们都知道,前段时间一直在搞ELK,同时也记录在了个人的博客篇章中,从部署到各个服务 ...
- 搭建ELK日志分析平台(上)—— ELK介绍及搭建 Elasticsearch 分布式集群
笔记内容:搭建ELK日志分析平台(上)-- ELK介绍及搭建 Elasticsearch 分布式集群笔记日期:2018-03-02 27.1 ELK介绍 27.2 ELK安装准备工作 27.3 安装e ...
- ELK日志分析平台.1-搭建
ELK日志分析平台.1-搭建 2017-12-28 | admin 一.简介1.核心组成 ELK由Elasticsearch.Logstash和Kibana三部分组件组成: Elastic ...
- ELK日志分析平台
ELK日志分析平台 ELK(1): ELK-简介 ELK(2): ELK-安装环境和安装包 ELK(3): ELK-安装elasticsearch ELK(4): ELK-安装logstash ...
- ELK日志分析平台系统windows环境搭建和基本使用
ELK(ElasticSearch, Logstash, Kibana),三者组合在一起就可以搭建实时的日志分析平台啦! Logstash主要用来收集.过滤日志信息并将其存储,所以主要用来提供信息. ...
- elk日志分析平台安装
ELK安装 前言 什么是ELK? 通俗来讲,ELK是由Elasticsearch.Logstash.Kibana 三个开源软件的组成的一个组合体,这三个软件当中,每个软件用于完成不同的功能,ELK 又 ...
- ELK日志分析平台搭建
ELK平台介绍 在搜索ELK资料的时候,发现这篇文章比较好,于是摘抄一小段: 以下内容来自:http://baidu.blog.51cto.com/71938/1676798 日志主要包括系统日志.应 ...
- ELK日志分析平台环境部署 (yum安装)
前言:通常体质被分散存储在不同的设备上面,在庞大的服务器集群中,我们需要集中化的管理,日志的统计和检索,一般我们使用grep和awk,wc等linux命令虽然能够实现检索和统计,但是呢,对于要求更高的 ...
- 在Windows系统下搭建ELK日志分析平台
简介: ELK由ElasticSearch.Logstash和Kiabana三个开源工具组成: Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索 ...
随机推荐
- 【未解决】centos 6.4 xen4.2 在关机的时候很慢
centos xen 在关机的时候 下面的关闭DomUs虚拟机 耗时很长... stopping xenconsoled daemon: [OK] sending shutdown to all Do ...
- 用SLF4j/Logback打印日志-2
本篇主要介绍logback的输出源配置,logback默认提供了很多输出源,但是用的最多的是这几种: OutputStreamAppender 日志输出到一个二进制流,可以通过 <encoder ...
- 首个threejs项目-前端填坑指南【转】
http://www.cnblogs.com/pursues/p/5226807.html 第一次使用threejs到实际项目中,开始的时候心情有点小激动,毕竟是第一次嘛,然而做着做着就感受到这玩意水 ...
- $.getJSON的缓存问题处理
今天遇到jQuery.getJSON的缓存问题.如果其调用的url之前曾经调用过的话,回调函数就会直接在缓存里面取得想要得值,而不是进入到后台,调用存储过程了.这是一个比较郁闷的问题.不修改的话,用户 ...
- WebService入门Demo
以前写博客最主要的就是不知道写什么东西,现在感觉能写点东西,就是感觉博客随笔的标题挺难取的,最近工作中刚好用到了WebService,刚好可以写一篇博客.去年工作的时候自己也用到过,只是知道调用一些W ...
- 查看LINQ Expression編譯後的SQL語法(转)
在用了LINQ語法之後的一個月,我幾乎把SQL語法全部拋到腦後了,不過 LINQ好用歸好用,但是實際上操作資料庫的還是SQL語法,如果不知道LINQ語法 編譯過後產生怎樣的SQL語法,一不小心效能就會 ...
- python2.7 调用 .net的webservice asmx
首先安装pip install suds 或下载:https://pypi.org/project/suds-jurko/0.6/#files 这个是最新版本 由于不支持python3.6, 所以只能 ...
- TensorFlow练习7: 基于RNN生成古诗词
http://blog.topspeedsnail.com/archives/10542 主题 TensorFlow RNN不像传统的神经网络-它们的输出输出是固定的,而RNN允许我们输入输出向量 ...
- ionic_ Network connectivity error occurred, are you offline?
错误如下: HenHouse admin$ ionic cordova build ios --prod > ionic integrations enable cordova ✖ Downlo ...
- IDEA注册码和license服务器附使用方法
以下两种方式均可激活intellij Idea 15和16版本 最上方点击,Help->Registet 1.注册码 43B4A73YYJ-eyJsaWNlbnNlSWQiOiI0M0I0QTc ...