日志分析的概述
-
日志分析是运维工程师解决系统故障,发现问题的主要手段
-
日志主要包括系统日志、应用程序日志和安全日志
-
系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因
-
经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误
日志分析的作用
-
分析日志时刻监控系统运行的状态
-
分析日志来定位程序的bug
-
分析日志监控网站的访问流量
-
分析日志可以知道哪些sql语句需要优化
主要收集工具
-
日志易: 国内一款监控、审计、权限管理,收费软件
-
splunk: 按流量收费,国外软件,主要三个部件组成(
Indexer
、Search Head
、Forwarder
)-
Indexder
提供数据的存储,索引,类似于elasticsearch
的作用 -
Search Head
负责搜索,客户接入,从功能上看,一部分是kibana的UI是运行,在Search Head
上的,提供所有的客户端可视化功能,还有一部分,是提供分布式的搜索功能,具有Elasticsearch
部分功能 -
Forwarder
负责数据接入,类似Logstash
或者filebeat
-
-
ELK: 海量日志分析平台(
Elasticsearch
、logstash
、kibana
),开源且在国内被广泛应用
集中式日志系统主要特点
采集日志分类
ELK概述
ELK是一个开源的数据分析平台,由三个开源项目Elasticsearch、Logstash和Kibana组成,因此被称为ELK
ELK主要用于处理和分析大量的日志数据,支持实时搜索、数据可视化和分析
-
Elasticsearch是一个分布式搜索引擎和分析引擎,能够实现实时搜索和分析大规模的数据集
-
Logstash是一个数据收集、处理和转换工具,能够从不同来源收集、处理和传输数据
-
Kibana是一个数据可视化工具,能够通过仪表盘、图形和地图等方式展示数据
-
ELK 三个组件相互配合,能够构建一个强大的、可扩展的日志分析平台,支持数据的快速检索、可视化和分析。
初级版ELK
终极版ELK
高级版ELK
ELK收集日志的两种形式
不修改源日志的格式: 而是通过logstash的grok方式进行过滤清洗,将原始无规则的日志转换为规则的日志
-
优点: 不用修改原始日志输出格式,直接通过logstash的grok方式进行过滤分析,好处是对线上业务系统无任何影响
-
缺点: logstash的grok方式在高压力情况下会成为性能瓶颈如果要分析的日志量超大时,日志过滤分析可能阻塞正常的日志输出;因此,在使用logstash时,能不用grok尽量不使用grok过滤功能。
修改源日志输出格式: 按照需要的日志格式输出规则日志,logstash只负责日志的收集和传输,不对日志做任何的过滤清洗。
-
优点: 因为已经定义好了需要的日志输出格式, logstash只负责日志的收集和传输,这样就大大减轻了logstash的负担,可以更高效的收集和传输日志。
-
缺点: 需要事先定义好日志的输出格式,这可能有一定工作量,但目前常见的web服务器例如httpd、Nginx等都支持自定义日志输出格式。
搭建ELK平台
Elasticsearch 官网:
https://www.elastic.co/cn/elasticsearch
Elasticsearch是一个基于Lucene库的分布式搜索引擎和数据分析引擎,能够实现实时搜索和分析大规模的数据集,支持文本、数字、地理位置等多种类型的数据检索和分析。Elasticsearch是一个开源的、高度可扩展的平台,能够处理海量的数据,并支持分布式的数据存储和处理。Elasticsearch的主要特点包括:
-
分布式搜索引擎: Elasticsearch能够对海量的数据进行快速的搜索和查询,并支持实时搜索。
-
分布式数据存储: Elasticsearch能够将数据分散存储在多个节点上,以提高数据的可用性和可靠性。
-
多数据类型支持: Elasticsearch支持多种数据类型,包括文本、数字、日期、地理位置等。
-
实时数据分析: Elasticsearch能够对数据进行实时的聚合、过滤和分析,并支持数据可视化。
-
可扩展性: Elasticsearch能够扩展到数百个节点,处理PB级别的数据。
-
开源: Elasticsearch是一个开源的软件,源代码可以公开获取和修改。 Elasticsearch广泛应用于企业搜索、日志分析、安全分析和商业智能等领域。它提供了丰富的API和工具,包括RESTful API、Java API和Python API等,方便开发人员集成和使用。
Logstash 文档地址:
https://www.elastic.co/guide/en/logstash/current/getting-started-with-logstash.html
Logstash 是一个开源的数据收集、处理和转换工具,能够从不同来源收集、处理和传输数据。,主要用于处理和分析大量的日志数据,支持多种数据源和格式,包括文本文件、数据库、日志文件、消息队列等。Logstash能够实现以下功能:
-
数据收集: Logstash能够从不同的数据源收集数据,并支持多种数据格式,包括JSON、CSV、XML等。
-
数据处理: Logstash能够对收集到的数据进行处理和转换,例如过滤、分析、标准化等。
-
数据传输: Logstash能够将处理后的数据传输到目标位置,例如Elasticsearch、Kafka、Redis等。
-
插件扩展: Logstash提供了丰富的插件,方便用户扩展和定制功能。
-
实时数据处理: Logstash能够实现实时数据处理,支持流式数据处理。 Logstash是一个高度可扩展的工具,能够处理大量的数据,并支持分布式部署。它能够与Elasticsearch、Kibana、Beats等工具集成,构建一个强大的、可扩展的数据分析平台。Logstash提供了丰富的文档和社区支持,方便用户学习和使用。
Logstash工作原理