AIOps时代下的利器:ELK
Posted 360云计算
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AIOps时代下的利器:ELK相关的知识,希望对你有一定的参考价值。
女主宣言
本文重点介绍通过 Heka + Elasticsearch + Kibana 进行数据收集、存储、分析引擎、演示等给业务带来的价值。
PS:丰富的一线技术、多元化的表现形式,尽在“HULK一线技术杂谈”,点关注哦!
内容提纲
序
源起
什么是ELK?
ELK能做什么?
手游接入的价值
手游如何做接入
日志关键字报警
未来的方向
序
当前市场对运营、运维、研发的能力要求越来越高,快速响应不断变化的业务流程管理需求是刚需,而现有的数据分析能力往往达不到要求。以大数据、实时分析、机器学习收集和日益智能化的工具可以帮助我们有效提升快速响应和自动洞察能力。
这也是 AIOps 平台技术里最重要的一点:大数据。今天我们重点讲数据收集、存储、分析引擎、演示等给业务带来的价值。
源起
日志,一个简简单单的文本,每天运维和研发都需要与它打交道,因为它能给我们提供:
1. 系统健康状况监控
2. 快速定位问题
3. 提高客户响应速度
4. 提高软件可用率
5. 跟踪客户端服务器故障根源
6. 发现隐藏问题,持续优化
在以前,分析日志都需要依赖人工登录服务器进行一系列高科技操作:AWK/GREP。而很多研发觉得超麻烦,再加上有一些没有服务器权限,就需要运维把日志拖下来,再由研发导到库,或导到本地测试环境,一起排查问题。--> 万一日志量很大呢,大家都想哭。
伴随着现在科技的发展,分布式的特性、集群规模的增大、用户的要求,集中化的日志实时分析平台,就显得越来越迫切。除了商业化解决方案国外的 Splunk,国内的日志易之外,开源的 ELK 已走进千家万户。
它的优势很明显:
1. 接入成本低
2. 速度快
3. 见效快
近几年的发展,让它逐渐成为备受关注的宠儿。同时它也是我们 AIOps 平台的一大利器,今天我们来聊聊游戏如何玩转ELK。
什么是ELK?
简单地来说,ELK 就是 Elasticsearch、Logstash 和 Kibana 三个软件的首字母简写。
Elasticsearch: 开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,集群配置方便等。
Logstash:开源的日志采集工具,日志进行收集、分析。
Kibana:开源的 Web 展示界面,只需要点击鼠标,就可以完成搜索、聚合功能,生成炫丽的仪表板。
而在5.0版本以后,Elastic 公司将原来的 ELK Stack 称之为 Elastic Stack,原因是引入了 Beats 套件。
Elastic Products 全家福:
而我们则采用最简洁的方法进行接入:
为何选择 Heka?
1. 比 jruby 写的 LogStash 轻量很多
2. 功能基本一致
3. Go 写的部署更方便
至于为什么喜欢 Go?可以观察前一篇团队大作:谁来给我讲清楚:Python 2和3到底有毛区别。
ELK能做什么?
快速统计区服的日志错误信息:
1. 请看如下操作
2. 快速定义客户端用户上报
最快的接入
Heka 接入 nginx 标准日志,只需要一秒。
Step1: 查看 Nignx 的 log_format
Step2:修改 /etc/hekad.toml 配置文件,适配 Ningx 的日志格式,并指定 Type
Step3:在 Kibana 中检索日志
手游接入的价值
手游如何做接入?
客户端的日志上报都是采用 http + url encode 来实现。因此需要在接收端配置 HTTP Post Input 接口,用来接收所有手游客户端的日志上报。
Step1: 配置 Heka 开启 HttpListenInput 即可
Step2:配置 Heka 插件 sandbox,扩展lua 处理上报格式:
我们再看看cz_decoder.lua中的内容:
Step3:万一上报的日志里没有用户IP呢?
如果客户端 Post上来的字段没有 ip,则使用 HTTP RemoteAddr:
PS: 嗯,还可以顺手采集user_agent。
还有哪些有意思的优化?
1. 增加ES自动刷新
为了优化性能,禁用ES的自动刷新(ES自动刷新会导致批量写入了占用太多内存),自己造个轮子:
编辑crontab,增加以下内容:
而/usr/bin/elasticsearch_refresh的内容如下:
2. 从exception_info取出真正报错的Lua文件(所谓"去重")
需要从某个上报的日志里提取特殊关键字,然后再做二次加工,实现方法也超简单在cz_decoder.lua下面这段代码几行就搞定啦!
3. Kibana最基本的安全认证
通过配置Nginx来实现,当然你也可以使用5.0版本以后提供的X-Pack,套件,只是免费一段时间后,需要付费啦。
然后再修改 nginx 中 kibana 的配置:
日志关键字报警
利用由 Yelp 公司开源的ElastAlert,即可实现关键字报警,目前针对 ES 5.0以上,需要采用单独的分支来实现。
通过部署后,如果你想要实现某个index的关键字,在多长时间之内,出现多少次就报警,可以在配置文件做如下处理:
配置完成后,如果有触发条件,即可收到报警邮件:
未来的方向
正在进行中就是将架构进一步完善,引入队列集群以保证接收端的稳定性,同时提升架构的整体性能。
接下来还需要打通内部系统的登录及权限验证、客户端的上报数据加密、基于ES开发报警配置界面、将日志的数据与业务数据做更多的联动等。
总之,我们会努力将AIOps时代下ELK这一利器的价值最大化,迎合的不断变幻的业务需求,同时将结合全链路监控、自动化平台、做服务的统一管制,为公司创造更好的效益。
祝大家ELK的海洋里玩得开心!
以上是关于AIOps时代下的利器:ELK的主要内容,如果未能解决你的问题,请参考以下文章