张鹏
摘要
大数据时代,服务器规模的不断扩大和分布式云应用的快速普及,使得系统运行监控和日常维护变得十分重要,相关运行日志的管理是其中一个不容忽视的问题。本文通过介绍ElasticStack的部署及应用情况,直观展现了Elastic Stack在日志收集及分析、增强系统监控运维能力、提升运维效率方面的作用,也为技术运维部门探索实现自动化运维的工具引入和广泛使用提供了参考。
【关键词】运维 日志管理 数据采集 数据分析 数据挖掘 Elastic Stack
1 引言
随着互联网技术的不断发展,云计算及大数据技术日新月异,部署互联网应用系统由以前的步骤复杂变得越来越简单,甚至按一个按钮就已经可以上线使用。这样的变化也驱动着系统运维由传统的运维管理开始向运维分析转变,从而从分散人工操作向集中自动化运维服务转变。在日常运维中,操作系统、应用服务、数据库服务和安全设备等主要维护对象,每天都会产生大量的日志数据,这些数据包括了系统运行信息、、访问日志信息、数据库操作信息、安全拦截信息等。这些信息价值很高,获取成本低,具有特有的优势,也是企业信息资产的重要组成部分。因此,日志数据的分析挖掘就成为运维分析的首个考虑要素。
过去,系统产生的日志数据基本都是分散存在于宿主服务器磁盘上,运维工程师通过远程连接工具登陆对应服务器,手动输入相应的查看命令进行临时、事后的分析和审计工作。在现在大数据的时代,系统产生的海量日志分布在本地机房、托管机房、公用云服务等不同的地方,传统的日志处理方案显示非常低效,也会因为操作习惯的差异导致出错机率的增加。因此,对日志进行及时收集、统一管理和实时分析成为运维部门急需解决的问题。
Elastic Stack实现了海量日志的统一管理和高效挖掘分析,有效地发挥了日志信息在故障处理、问题定位、性能优化等实际运维工作中的作用。
2 Elastic Stack简介
2.1 Elastic Stack简介
Elastic Stack是三个软件产品的组合,分别是:Elasticsearch,Logstash和Kibanao通常三者配合使用。Elasticscarch是一个基于Lucene的搜索服务器;Logstash是一个管理事件和日志的工具;Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。
其实,简单来说,Elastic Stack的核心是Elasticsearch,Logstash和Kibana都是为Elasticsearch服务的。使用Logstash能够很方便的将其他来源的数据,比如:日志文件、数据库等方便的导入到Elasticsearch中。使用Kibana可以直观清晰的展示Elasticsearch中存储的数据,生成图表,帮助分析,同时提供控制台来操作Elasticscarch。这三者的有机结合为日志数据实时、可视化处理提供了完整的解决方案。
2.2 Elastic Stack在日志管理与分析方面具有以下优点
处理灵活:Elasticsearch是实时全文索引;
配置简单:Elasticsearch全部采用JSON接口,Logstash是Ruby DSL设计,都是目前业界最通用的配置语法设计;
性能高效:确保每次查询都是实时计算,优秀的设计和实现基本可以达到百亿级数据查询的秒级响应;
集群扩展:Elasticscarch和Logstash集群都是可以线性扩展的;
数据可视:Kibana界面上,运维人员点击鼠标,就可以完成搜索、聚合功能,使数据以生成炫丽的图片,组成仪表板进行集中展示。
2.3 Elastic Stack解决了以下运维痛点
开发人员不能登录线上服务器查看详细日志:由于企业人事架构的限制,开发人员与运维人员对于线上服务器的操作权限是有区别的,那意味着对于已上线应用需要检查运行日志进行排障的时候,就必须要运维人员介入配合,从而增加沟通成本和影响工作效率。
各个系统日志信息分散存放,技术人员难以查找:随着企业的不断发展,应用系统越来越多,甚至出现应用平台集群化部署的情况,技术人员查找分析日志的难度和时间随着平台子系统规模的扩大而增大。
日志数据量大,查询速度慢,或者数据不够实时:应用系统运行过程时刻产生日志数据,且数据量大,通过系统文本处理工具进行查询耗费时间太长,也无法感知新采集的日志数据,影响最终报告的输出。
3 Elastic Stack平台应用实践
3.1 平台网络拓扑架构
为保证日志分析服务的可扩展性,采取分区域搭建Logstash及Redis服务,再组成集群,充分结合了企业自身的网络环境实际,平台网络拓扑如图1所示。
这个架构中,首先在接入平台日志收集的各个收集对象(服务器群)上分别部署Logstash-Agent和Beat收集插件进行原始日志采集,所有采集到的日志经过各自区域Redis集群,利用消息队列机制降低数据丢失的隐患随后Logstash的索引组件将负责从Redis中读取日志数据,进行解析转换等数据预处理工作,再将经过预处理的数据输入Elastcsearch集群进行进一步的处理和存储;最终Kibana负责完成面向用户的日志数据统计、分析与展现工作。
3.2 环境部署
按照官方的安装指南完成Elastic Stack平台基础环境的搭建,只针对一些关键配置进行说明。
3.2.1 配置Filebeat采集访问日志数据写入Redis
安裝日志文件采集插件Filebeat,修改配置文件,指定日志采集路径与输出路径:
filebeat.prospectors:
-input_type:log
paths:
-/var/weblogs/*/*.log
tags:["nginx-log"]
output.redis:
hosts:["172.23.130.219"]
port:6379
key:"nginx-log"
datatype:list
db:0
3.2.2 配置Logstash读取Redis中的日志数据写入Elasticsearch
配置输入指向Redis和输出指向Elasticsearch:
input{
redis{
data_type=>"pattern channel"
key=>"logstash-*"
host=>"172.23.130.219"
port=>6379
threads=>5
}
}
output{
elasticsearch{
hosts=>'172.23.130.219:9200'
}
}
3.2.3 配置ELasticsearch
只需要在Elasticsearch配置文件elasticsearch.yml中进行相关路径和端口设置:
cluster.name:nfw-elk
node.name:nfw-elk-nodel
path.data:/esdata
path.logs:/var/log/elasticsearch
network.host:0.0.0.0
http.port:9200
3.2.4 配置Kibana
server.port:5601
server.host:"172.23.130.219"
elasticsearch.url:"http://172.23.130.219:9200"
kibana.index:".kibana"
3.2.5 访问Kibana
所有安装和配置完成之后,在浏览器中访问http://172.23.130.219:5601即可看到最终Kibana界面,如图2所示。
4 应用效果
Elastic Stack平台主要为技术运维部门提供日志集中管理和日志分析两大功能:
在日志管理方面,不仅将以往分散在各台服务器的日志进行了集中管理,而且简化了日志查询的方式,大幅提高了日志查询的效率;引入Elastic Stack之前,人工操作查看单台应用主机日志平均耗时5分钟;引入ElasticStack之后,所有应用主机日志均可在界面上集中查询,平均耗时1秒。且不受应用主机数量和日志数量增长的限制。
在日志分析方面,Elastic Stack的分析挖掘能力,对监控过程中的异常告警和故障诊断起到了极大的辅助作用;通过从日志中挖掘出被监控系统的各项指标,及时反映系统的健康状态和性能瓶颈,改变了原先需要编写复杂脚本才能部署监控的方式,不仅效率更高,同时对系统正常的业务运行没有任何影响,通过对多种日志的快速检索,关联分析和直观展现,有效地帮助运维人员提高了定位故障原因的速度。
5 结语
随着业务的不断发展,在大规模的系统运维过程中,集中日志处理及分析平台是保障业务系统稳定运行的关键。通过基于ElasticStack的集中运维日志分析平台,运维人员可以对系统运行的各种指标实时进行监控,及时发现各种异常;对各类指标进行多维度分析展现;对各种数据按需要进行有效存储用于容量、性能等分析;对日志文本数据进行精确或模糊的全文检索;处理的数据容量达到TB甚至PB级别。该平台学习门槛低,只需比较低的开发成本,就可以让每个运维人员都按照各个系统不同的特点进行开发,开发周期短,满足各种个性化需求;与目前最为流行的机器学习功能融合,从大量的数据中发现规律,对于不符合规律的现象进行提示,从而实现提前预警,一定程度上避免被动处理问题;实时总结及发现海量数据处理中的内在规律,也可以为技术管理部门作出正确的决策提供依据。
参考文献
[1]饶深琳.ELK Stack权威指南[M].机械工业出版社,2015.
[2]詹玉林.民生銀行:我们的ELK日志分析平台,2017.