APP下载

ELK日志分析平台在系统运维中的应用

2017-04-14张彩云

电子技术与软件工程 2017年6期

张彩云

随着气象部门对数据传输时效要求不断提升,以及业务系统规模不断扩大,对系统中日志的收集和集中处理的需求越来越高。本文提出了基于ELK实时进行大日志数据搜索的软件集成方案。通过对ELK、Redis整合方案的介绍描述了ELK日志分析平台的日志处理流程,结合全国综合气象信息共享系统(CIMISS)内蒙古气象局实际场景设计了ELK日志分析平台。通过分析日志可以快速定位系统异常,提前预警风险,加快了气象部门实现智能化运维、信息化管理的步伐。

【关键词】日志分析 ELK 智能化运维

1 引言

大数据时代,随着存储与计算集群规模的不断扩大,气象部门业务系统的集群环境也已普遍。然而现在的机群系统不仅限于解决性能、可靠、可扩展性等层面上,更重要的是具有易操作性和内部数据共享性等。运维及开发人员通过日志信息不但可以知道系统运行状况、检查运行过程中的错误及排查原因,还可以知道服务器的负荷,性能安全性,从而及时采取措施纠正错误。

大规模集群系统中日志被分散的储存不同的设备上。传统方法通过使用命令工具如cat、tail、sed、awk、grep等等进行过滤输出后分析的方法由于效率较低与不再适用,明显增加了运维工作量。当务之急的工作就是要使用集中化的日志管理平台,将所有服务器上的日志收集汇总进行监控、分析。优秀的系统运维平台既能实现数据平台各组件的集中式管理、方便系统运维人员日常监测、提升运维效率,又能反馈系统运行状态给系统开发人员。

2 ELK简介

ELK是由ElasticSearch、Logstash、Kibana组成的开源日志处理平台解决方案。ELK能把这些日志集中管理,并提供全文检索、统计分析功能,不仅可以提高诊断的效率,同时可以起到实时系统监测、网络安全、事件管理和发现bug等功能。

2.1 ElasticSearch简介

ElasticSearch是一个基于Lucene的全文搜索引擎。基于RESTful web接口,提供了一个分布式多用户能力的全文搜索引擎。用Java开发的Apache许可条款下的开放源码。在云计算应用中,能够达到实时搜索,稳定,可靠,快速,且安装使用方便。

2.2 Logstash简介

Logstash由JRuby语言编写的日志采集解析工具,基于消息(message-based)的简单架构。Logstash由input、filter和output三部分组成,input负责从数据源提取数据,filter负责解析、处理数据,output负责输出数据,每部分都有提供丰富的插件。不同于分离的代理端(agent)或主机端(server),Logstash可配置单一的代理端(agent)与其它开源软件结合,以实现不同的功能。

2.3 Kibana简介

Kibana也是一个开源的分析可视化平台,它具有汇总、分析和搜索重要数据日志并提供友好的web界面的功能。他可以为Logstash和ElasticSearch提供的日志分析的 Web 界面,具有较好的展示效果,可以自定义多种表格、柱状图、饼状图、折线图,对存储在ElasticSearch中的数据进行深入挖掘分析与可视化。

3 日志分析系统

3.1 日志分析系统框架

基于ELK的日志分析系统的体系结构总体分为日志采集、日志预处理和日志分析三部分,如图1所示。

虽然单纯的ELK架构方式容易搭建,但是由于没有消息队列缓冲,存在数据丢失隐患,故本文设计的日志分析平臺引入了消息队列机制。多个独立的Logstash agent(shipper)部署在CIMISS系统(26台服务器)各个日志生成host上,负责收集不同来源的日志,直接将日志输出到Redis队列(list)中;Logstash(Indexe)负责从Redis中取出数据,对数据进行格式化和相关预处理后,输出到ElasticSearch集群中存储;最后由Kibana呈现给用户做统计、分析。

3.2 ELK环境部署

3.2.1 基础环境准备

ELK日志分析平台采用两台安有Centos6.4系统的虚拟机作为集群,一台作为master节点,另一台为slave节点,master收集到日志后,会随机把一部分数据碎片到salve上;同时,master和slave又都会各自做副本,并把副本放到对方机器上,这样就保证了数据不会丢失。如果master宕机了,那么客户端在日志采集配置中将ElasticSearch主机指向改为slave,就可以保证ELK日志的正常采集和web展示。

3.2.2 ElasticSearch安装及配置

由于ElasticSearch和Logstash都是依赖于java环境运行,且对java版本要求较高,首先在两台ElasticSearch客户端逐台安装jdk8。然后安装ElasticSearch5.0.1,集群名设置为ElasticSearch,每台服务器的主机名为默认主机名,完成配置文件修改工作并登陆Web页面测试安装是否成功。最后安装head插件,它是一个用浏览器跟ES集群交互的插件,可以查看集群状态、集群的doc内容、执行搜索和普通的Rest请求等。

3.2.3 Logstash安装及配置

Logstash的安装较为简单,首先检查CIMISS系统中各日志生成服务器的java版本是否能够支持Logstash,如果版本较低的话创建新用户,安装高版本的JDK,同时配置环境变量。然后在日志生成服务器和客户端安装Logstash5.0.1,并编写简单的输入输出信息测试Logstash是否能够正确输出。测试完成创建一个配置文件,使用 input 、filter和 output 定义收集日志时的输入和输出的相关配置,启动Logstash时指定使用该配置文件。

3.2.4 Kibana及插件安装配置

解压安装Kibana后修改配置文件,由于Kibana需要一直运行在前台,因此选择使用screen启动Kibana。为了保证日志分析平台的安全性,在Kibana和ElasticSearch中安装x-pack插件。此时Logstash的配置文件中应将x-pack的访问权限配置到output。使用浏览器访问Kibana,在Discover中添加Logstash发送给ElasticSearch的index名,并在Query bar中输入日志中可能引起系统异常的字段,搜索结果会随着时间的推移显示在页面顶部的方直图中,如图2所示。同时可以保存关注的搜索结果,并在Visualize中创建柱状图,在Dashboard中监控。

4 结论

大数据时代的运维管理有着重大的意义,好的日志处理平台事半功倍的提升开发人员和运维人员的效率。本文提出了基于ELK实时进行大日志数据搜索的软件集成方案。采集CIMISS系统各设备上的操作日志、系统运行日志、进程输出日志、以及维护记录日志,发现和捕获海量日志中的异常行为和违规行为,通过分析日志快速定位系统异常,为保障气象部门系统系统安全提供支持。

参考文献

[1]https://www.elastic.co/

[2]吕增辉,陶振凯,唐静.基于Lucene.net的对象持久化的实现[J].吉林师范大学学报(自然科学版),2009,30(01):90-91.

[3][美]拉斐尔·酷奇,等.深入理解ElasticSearch[M].北京:机械工业出版社,2016.

作者单位

内蒙古自治区气象信息中心 内蒙古自治区呼和浩特市 010010