欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

干货实战|基于Elastic Stack的日志分析系统

程序员文章站 2022-04-28 08:59:03
...

干货实战|基于Elastic Stack的日志分析系统

Elastic Stack简介

Elastic Stack是Elastic公司旗下的一系列软件总称,包括Elasticsearch、Logstash、Kibana和Beats。Elasticsearch是一个分布式搜索引擎,负责数据的存储、查询,支持高并发的写入与查询;Logstash是动态数据收集管道,可以进行数据的清洗、格式化等处理;Kibana是基于Elasticsearch的数据可视化平台,提供种类丰富的图表来呈现数据;Beats通常部署在生产环境下,扫描日志文件并向Elasticsearch或Logstash发送数据,在本文中我们使用FileBeat。

Elastic Stack的应用非常广泛,常见的有日志管理与分析、指标分析、性能监测、应用搜索等。本篇文章中我们借助腾讯云的Elasticsearch、使用Elastic Stack搭建自动化流转过程的监控与统计系统。

准备工作

  • 日志消息协议

前边提到,Logstash是可以进行数据处理的,所以对于日志文件的格式并没有要求,只需要后期在Logstash处借助grok进行格式化即可。方便起见,在本次使用中我们统一了日志消息协议,并统一使用json格式单独存储,因此省去了Logstash处的格式化操作。

干货实战|基于Elastic Stack的日志分析系统

图1. 自动化流转日志消息协议

图1为我们定义的日志协议,其中log_type字段用于在Elasticsearch中建立索引(相当于我们熟悉的数据表),phase、finish_time是我们后期监控与统计主要的划分维度,miles是我们监控的指标。其他的一些字段是我们业务中会使用到的信息,主要用于后期统计使用。

  • 日志获取方式

在我们的使用中,日志的产生源有两大类:已完成开发的和正在进行开发的。对于前者,为了避免重新开发带来的工作量,我们采取定时扫库的方式“自给自足”的产生日志消息;对于后者,我们要求开发根据上述日志消息协议生产日志。两种日志都需要通过部署在环境内的FileBeat发送至Logstash,再由Logstash发送至Elasticsearch中。

数据接入

  • 日志的准备

以Python为例,将日志消息msg使用fp.write(json.dumps(msg))输出到文件中

  • Beats-Logstash-Elasticsearch接入

  • Logstash配置(conf)

input {
    beats {
        port => 8888
        codec => "json"
    }
}

output {
    elasticsearch {
        hosts => ["<elasticsearch_ip>:<elasticsearch_port>"]
        index => "%{log_type}"
    }
    stdout {
        codec => rubydebug
    }
}

上述配置中,Logstash监听本地8888端口、并使用json解码器对消息进行解析。对于解析后的消息,根据消息中的log_type字段发送至Elasticsearch对应的索引中,同时在命令行中输出。

  • Logstash启动

./bin/logstash -c logstash.conf(可以使用nohup)

  • FileBeat配置(yml)

filebeat.inputs:
- type: log
  enabled: true
  paths:
  - /usr/local/app/wsd_cron_agent/script/logs/*.log
output.logstash:
  hosts: ["<logstash_ip>:<logstash_port>"]

上述配置中,FileBeat定时扫描/usr/local/app/wsd_cron_agent/script/logs/路径下的log文件,发送至远端的Logstash处。

  • FileBeat启动

./filebeat -e -c filebeat.yml(可以使用nohup)

接下来FileBeat和Logstash就会自动将路径下的日志文件传输至Elasticsearch了。

Kibana可视化

对于第一次接入的数据,首先要做的是创建索引,操作方法是[Management]->[Index Patterns]->[Create Index Pattern]->Index pattern中输入索引名->单击[Create]

干货实战|基于Elastic Stack的日志分析系统图2. Kibana建立索引

之后是使用Kibana自带的visualize进行数据的可视化,这里就是根据自身需求进行设置即可。可以在Dashboard中制作一个自定义的监控窗口,可以清楚直接的看到各个自动化流程的运转情况。

干货实战|基于Elastic Stack的日志分析系统

图3. 地图中业流转Dashboard

一些需要注意的问题 & 可以改进的地方

总的来说,Elastic Stack搭建日志分析系统是非常简单、方便的,不过需要注意以下几点:

  • Elasticsearch是一种非关系型数据库,不能做连表查询操作,因此必须将所有信息都放在一条消息/一例数据中

  • 请避免重复日志消息的产生

  • 目前得到的消息是腾讯云在和Elastic官方谈合作,之后会有一些插件(如报警功能)加入,使得监控和分析功能更加强大

由于之前没有接触过Elastic Stack,所以也是磕磕碰碰的做了一些尝试,一些地方为了避免出错做了简化,之后可以再进一步优化以提升性能:

  • 需要单独产生日志消息,对于开发不够方便;可以考虑在Logstash出增加grok操作对日志进行格式化后再送入Elasticsearch

  • FileBeat和Logstash的负载均衡存在进一步提升的可能


中生代技术社区 Elasticsearch在线分享直播预告

干货实战|基于Elastic Stack的日志分析系统

2020-04-15 15:00 线上Elasticsearch大数据搜索和分析应用 网络研讨会

演讲者:朱杰 Jerry
现在是 Elastic 解决方案架构师,专注于 Elastic Stack的解决方案的设计和咨询。在加入Elastic之前,Jerry有十五年软件开发经验,涉及服务器端程序、Web、移动开发等多个领域。在大数据分析领域也有十年实践经验,熟悉Hadoop 生态、Elastic Stack。

演讲者:李季

北京云科创凯信息技术有限公司董事长兼CEO,公司创始人,保险业务专家,计算机技术专家。曾在PICC总部研发中心任主管项目经理,负责保险核心业务系统研发管理工作。10年+信息技术公司运营管理经验。

Elasticsearch在当今大数据搜索和分析领域热度非常之高,稳居DB-Engine搜索引擎排行榜首,本次研讨会为你讲解Elasticsearch搜索能力的演进,强大的搜索和聚合能力,适用的大数据应用场景,和Hadoop生态的配合使用,使用高级安全特性保护您的大数据安全。并邀请我们合作伙伴云科凯创介绍相关行业应用案例。

报名方式:识别图片二维码或阅读原文报名

干货实战|基于Elastic Stack的日志分析系统

想要加入中生代直播群的小伙伴,请添加群助手大白的微信

申请备注(姓名+公司+技术方向)才能通过哦!

干货实战|基于Elastic Stack的日志分析系统

在看,让更多人看到!