写点什么

基于 Elastic Stack 的日志分析系统

  • 2019-11-07
  • 本文字数:1822 字

    阅读完需:约 6 分钟

基于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 处的格式化操作。



图 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: logenabled: truepaths:- /usr/local/app/wsd_cron_agent/script/logs/*.logoutput.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]



图 2. Kibana 建立索引


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



图 3. 地图中业流转 Dashboard

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

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


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

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

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


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


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

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


本文转载自公众号云加社区(ID:QcloudCommunity)。


原文链接:


https://mp.weixin.qq.com/s/G473oMCOldT6wFtjqM6A3w


2019-11-07 18:141439

评论

发布
暂无评论
发现更多内容

手把手教小伙伴们使用 Nginx 部署 TienChin 项目!

江南一点雨

Java nginx Vue 前后端分离 springboot

软件测试/测试开发丨app自动化测试之模拟器控制

测试人

软件测试 自动化测试 Android Studio 测试开发 appium

直播预告|一站式MLOps meetup,洞见行业前沿!聆听第四范式、AWS、腾讯、百度的MLOps落地、演进、实践经验

星策开源社区

百度 腾讯 AWS 第四范式 MLOps

众筹互助模式DApp开发智能合约系统搭建

薇電13242772558

智能合约

好用的3D建筑设计软件:Vectorworks 2023激活版

真大的脸盆

Mac Mac 软件 3D建筑设计软件 建筑设计

解决方案| anyRTC融合腾讯会议

anyRTC开发者

音视频 视频会议 视频通话 融合会议 腾讯会议

数据库ChatGPT插件来了,SQL使用体验进一步起飞

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

国内首家!云科通明湖应用交付控制器通过金融信创生态实验室适配验证

通明湖

内网升级“高效安全”利器!统信软件发布私有化更新管理平台

统信软件

安全 操作系统

奇怪的翻译

五月的风

翻译软件 ChatGPT

玻璃幕墙LED显示屏原理及应用领域指南

Dylan

安装 结构 LED显示屏 屏幕

人工智能快速发展趋势下,中国该如何应对?

GPU算力

牛皮!仅凭“阿里爸爸”大厂面试参考笔记,去携程Java三面,已OC

Java面试那些事儿

Java 编程 架构 面试 java面试

模块9设计电商秒杀系统

KING

智能化司库平台助力财资管理升级

用友BIP

用友 智能会计 智能财务 价值财务 全球司库

从 TDengine 存储引擎的变化探讨——为何大家应尽快切换 3.0 版本?

TDengine

tdengine 时序数据库 国产数据库

云原生月报丨值得开发者关注的最新动态

阿里巴巴中间件

阿里云 云原生 月报

2023 年开源现状报告确认安全是首要问题

开源雨林

统计学 开源软件 开源现状

软件测试/测试开发丨智能遍历测试在回归测试与健壮性测试的应用

测试人

软件测试 自动化测试 测试开发 自动遍历

IM开发者的零基础通信技术入门(十一):为什么WiFi信号差?一文即懂!

JackJiang

即时通信 即时通讯IM

Lion : 超越 AdamW 的优化算法

Zilliz

模型训练 算法优化

开源项目的演进会遇到哪些“坑”?KubeVela 从发起到晋级 CNCF 孵化的全程回顾

阿里巴巴中间件

阿里云 开源 云原生 KubeVela cncf

软件测试/测试开发丨app自动化测试之Capability 使用进阶

测试人

软件测试 自动化测试 测试开发 appium capability

Open-GeoIP:超简单的开源IP地址位置查询服务

冯骐

golang 开源 网络 ip地理定位 geoip

PyTorch 深度学习实战 | Fashion MNIST图片重建实战

TiAmo

深度学习 MNIST

IDEA使用宏实现保存即编译

源字节1号

软件开发 开源治理 小程序开发

Milvus 2.3 Massively Accelerates AI-Powered Applications With NVIDIA GPU Support

Zilliz

gpu nvidia 非结构化数据 Milvus 向量数据库

2023年市场快速恢复,社交资讯营销如何把握新机遇

易观分析

社交 资讯

MobPush Android SDK API

MobTech袤博科技

如何用秒验提升用户体验和转换率?

MobTech袤博科技

Airwallex 基于 Flink 打造实时风控系统

Apache Flink

大数据 flink 实时计算

基于Elastic Stack的日志分析系统_文化 & 方法_王政飞_InfoQ精选文章