ELK日志监控分析系统

这篇具有很好参考价值的文章主要介绍了ELK日志监控分析系统。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、什么是 ELK Stack?

那么,ELK 到底是什么呢? “ELK”是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。Elasticsearch 是一个搜索和分析引擎。Logstash 是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如 Elasticsearch 等“存储库”中。Kibana 则可以让用户在 Elasticsearch 中使用图形和图表对数据进行可视化。

Elastic Stack 是 ELK Stack 的更新换代产品。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LyMVuef2-1678518175643)(null)]

Elasticsearch:这个开源的分布式搜索引擎基于 JSON 开发而来,具有 RESTful 风格。它使用简单,可缩放规模,十分灵活,因此受到用户的热烈好评,而且如大家所知,围绕这一产品还形成了一家专门致力于搜索的公司。

**Logstash和Kibana:**Elasticsearch 的核心是搜索引擎,所以用户开始将其用于日志用例,并希望能够轻松地对日志进行采集和可视化。有鉴于此,我们引入了强大的采集管道 Logstash 和灵活的可视化工具 Kibana。

**Beats:**我们向 ELK Stack 中加入了一系列轻量型的单一功能数据采集器,并把它们叫做 Beats。

elk日志监控平台,中间件,elk,elasticsearch,搜索引擎

官网:https://www.elastic.co/cn/what-is/elk-stack

2、ELK常见的几种架构体系

2.1、Elasticsearch + Logstash + Kibana

elk日志监控平台,中间件,elk,elasticsearch,搜索引擎

此架构由Logstash分布于各个节点上搜集相关日志、数据,并经过分析、过滤后发送给远端服务器上的Elasticsearch进行存储。Elasticsearch将数据以分片的形式压缩存储并提供多种API供用户查询,操作。用户亦可以更直观的通过配置Kibana Web方便的对日志查询,并根据数据生成报表。

这是最简单的一种ELK架构方式。优点是搭建简单,易于上手。缺点是Logstash耗资源较大,运行占用CPU和内存高。另外没有消息队列缓存,存在数据丢失隐患。

2.2、Elasticsearch + Logstash + Filebeat + Kibana

elk日志监控平台,中间件,elk,elasticsearch,搜索引擎

与上一种架构相比,这种架构增加了一个filebeat模块。filebeat是一个轻量的日志收集代理,用来部署在客户端,优势是消耗非常少的资源(较logstash), 所以生产中,往往会采取这种架构方式,此种架构将收集端logstash替换为beats,更灵活,消耗资源更少,扩展性更强。同时可配置Logstash 和Elasticsearch 集群用于支持大集群系统的运维日志数据监控和查询。但是这种架构有一个缺点,没有消息队列缓存,当logstash出现故障,会造成日志的丢失。

2.3、Elasticsearch + Logstash + Filebeat + Redis(Kafka)+ Kibana

elk日志监控平台,中间件,elk,elasticsearch,搜索引擎

logstash节点和elasticsearch节点可以根据日志量伸缩节点数量, filebeat部署在每台需要收集日志的服务器上。

此种架构引入了消息队列机制,位于各个节点上的beats先将数据/日志传递给消息队列(kafka、redis、rabbitMQ等),logstash从消息队列取数据进行过滤、分析后将数据传递给Elasticsearch存储。最后由Kibana将日志和数据呈现给用户。因为引入了Kafka(或者Redis),所以即使远端Logstash server因故障停止运行,数据将会先被存储下来,从而避免数据丢失。

工作流程:Filebeat采集—>发到kafka—> logstash处理从kafka缓存的数据进行分析—> 输出到es—> 显示在kibana

这种模式特点:这种架构适合于日志规模比较庞大的情况。但由于 Logstash 日志解析节点和 Elasticsearch 的负荷比较重,可将他们配置为集群模式,以分担负荷。引入消息队列,均衡了网络传输,从而降低了网络闭塞,尤其是丢失数据的可能性。

3、Docker部署ELK日志监控分析系统

3.1、下载需要的镜像

docker pull elasticsearch:7.17.7
docker pull logstash:7.17.7
docker pull kibana:7.17.7

3.2、下载docker-compose命令

下载dokcer-compose

curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

给dokcer-compose权限

sudo chmod +x /usr/local/bin/docker-compose

3.3、编写配置文件

# 系统下创建目录架构
opt
    elk
        elasticsearch
            data #必须拥是777权限
            elasticsearch.yml
        kibana
            kibana.yml
        logstash
            pipeline
            logstash.conf
            logstash.yml
        docker-compose.yml
touch -p /opt/elk/docker-compose.yml
mkdir -p /opt/elk/elasticsearch/data
touch -p /opt/elk/elasticsearch/elasticsearch.yml
sudo chmod 777 /opt/elk/elasticsearch/data
touch -p /opt/elk/kibana/kibana.yml
touch -p /opt/elk/logstash/pipeline/logstash.conf
touch -p /opt/elk/logstash/logstash.yml

elasticsearch.yml内容如下

## Default Elasticsearch configuration from Elasticsearch base image.
### https://github.com/elastic/elasticsearch/blob/master/distribution/docker/src/docker/config/elasticsearch.yml
cluster.name: "docker-cluster"
network.host: 0.0.0.0
### X-Pack settings
### see https://www.elastic.co/guide/en/elasticsearch/reference/current/setup-xpack.html
xpack.license.self_generated.type: trial
xpack.security.enabled: true
xpack.monitoring.collection.enabled: true

kibana.yml内容如下

## Default Kibana configuration from Kibana base image.
### https://github.com/elastic/kibana/blob/master/src/dev/build/tasks/os_packages/docker_generator/templates/kibana_yml.template.js
server.name: kibana
server.host: 0.0.0.0
i18n.locale: "zh-CN"
elasticsearch.hosts: [ "http://192.168.56.103:9200" ]
monitoring.ui.container.elasticsearch.enabled: true
### X-Pack security credentials
elasticsearch.username: elastic
elasticsearch.password: elk123456

logstash.yml内容如下

## Default Logstash configuration from Logstash base image.
### https://github.com/elastic/logstash/blob/master/docker/data/logstash/config/logstash-full.yml
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://192.168.56.103:9200" ]
### X-Pack security credentials
xpack.monitoring.enabled: true
xpack.monitoring.elasticsearch.username: elastic
xpack.monitoring.elasticsearch.password: elk123456

logstash.conf内容如下

input {
        tcp {
                port => 5000
        }
}
filter {}
### Add your filters / logstash plugins configuration here
output {
        elasticsearch {
                hosts => "192.168.56.103:9200"
                user => "elastic"
                password => "elk123456"
### 日志索引名称
                index => "elk"
        }
}

docker-compose.yml内容如下

version: "2.2"
services:
  ###配置elasticsearch
  es:
    image: elasticsearch:7.8.0
    container_name: elasticsearch 
    ports:
      - "9200:9200"
      - "9300:9300"
    environment:
      discovery.type: single-node
      ###es的密码
      ELASTIC_PASSWORD: elk123456
      ES_JAVA_OPTS: "-Xmx256m -Xms256m"
    volumes:
       # 这里注意一下 如果你想吧docker中es的数据 映射出来 你本地的 /opt/elk/elasticsearch/data 必须拥有 777权限
      - /opt/elk/elasticsearch/data:/usr/share/elasticsearch/data
      - /opt/elk/elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
    network_mode: host
  ###配置Logstash
  ls:
    image: logstash:7.8.0
    container_name: logstash
    ports:
      - "5000:5000/tcp"
      - "5000:5000/udp"
      - "9600:9600"
    network_mode: host
    environment:
      discovery.type: single-node
      ES_JAVA_OPTS: "-Xmx256m -Xms256m"
    volumes:
    ###将本机目录/opt/elk/logstash/pipeline下的文件映射到docker容器里面
      - /opt/elk/logstash/pipeline:/usr/share/logstash/pipeline
      - /opt/elk/logstash/logstash.yml:/usr/share/logstash/config/logstash.yml
    depends_on:
      - es       
  ###配置Kibana
  kb:
    image: kibana:7.8.0
    container_name: kibana
    ports:
      - "5601:5601"
    volumes:
      ###将本机目录/opt/elk/kibana/kibana.yml下的文件映射到docker容器里面
      - /opt/elk/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml
    network_mode: host
    depends_on:
      - es

discovery.type:表示这是单机启动

ES_JAVA_OPTS:配置该容器占用主机的内存等等

network_mode:设置docker容器的网络模式

depends_on:指必须后面的服务启动以后 这个才启动

3.4、部署完成启动

cd /opt/elk
docker-compose up

elk日志监控平台,中间件,elk,elasticsearch,搜索引擎

3.5、访问kibana(记得打开个工具端口)

http://192.168.56.103:5601/
用户名:elastic
密码:elk123456

elk日志监控平台,中间件,elk,elasticsearch,搜索引擎

4、Springboot集成Logstash

在pom文件中添加以下依赖 让springboot的日志集成logstash

<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>7.2</version>
</dependency>

resources下添加logbacklogstash集成的文件

elk日志监控平台,中间件,elk,elasticsearch,搜索引擎

logback-spring.xml配置如下

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<!--配置logstash 发送日志数据的地址 -->
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>192.168.56.103:5000</destination>
<!--自己定义logstash的encoder-->
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n </pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!--springboot的日志 -->
<include resource="org/springframework/boot/logging/logback/base.xml" />
<!--日志的打印级别 -->
<root level="INFO">
<appender-ref ref="LOGSTASH" />
<appender-ref ref="CONSOLE" />
</root>
</configuration>

application.properties配置如下文章来源地址https://www.toymoban.com/news/detail-612609.html

logging.config= classpath:logback-spring.xml

到了这里,关于ELK日志监控分析系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于Filebeat、Kafka搭建ELK日志分析平台详细步骤

    写在前头:公司一直没有搭建一个支持实时查询日志的平台,平常看日志都得去服务器下载,大大降低开发效率,前段时间有大佬同事搭建了一款日志平台,支持sit,uat等各个环境的日志实时查询,大大提高bug定位速度。因对其感兴趣特向大佬请教,学习记录下搭建流程。 选

    2024年02月06日
    浏览(52)
  • ELK (一)部署ELK+Filebeat日志收集分析系统

    说明:此安装流程只适用于8.0.0以下的版本 1.1 下载ElasticSearch的wget指令: 1.2 解压安装包到指定目录 指定解压缩到 /usr/local 目录下 1.3 修改配置文件 (1)elasticsearch.yml 分别创建 path.data、path.logs 对应的 data、logs文件夹。 详细配置: (2)limits.conf 末尾追加以下内容: (3)s

    2024年02月08日
    浏览(47)
  • ELK 日志分析系统

    目录 一、日志管理方案 二、完整日志系统基本特征 三、ELK 简介 ELK组件: 1、ElasticSearch 2、Logstash 3、Kibana  可以添加的其它组件:  1、Filebeat 2、缓存/消息队列(redis、kafka、RabbitMQ等) 3、Fluentd 三、ELK 的工作原理 四、ELK部署 1、Elasticsearch部署  ①关闭防火墙和安全机制  

    2024年01月21日
    浏览(43)
  • 【ELK企业级日志分析系统】安装与部署ELK详解

    ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash和kibana三个开源工具配合使用 , 完成更强大的,用户对日志的查询、排序、统计需求。 ElasticSearch ElasticSearch:是基于Lucene(一个 全文检索引擎的架构 )开发的分布式存储检索引擎,用来存储各类日志。 El

    2024年02月16日
    浏览(42)
  • 【ELK企业级日志分析系统】部署Filebeat+ELK详解

    接上文安装与部署ELK详解 (1)在Filebeat节点上,安装Apache服务 (2)修改Apache服务的配置文件 (3)开启Apache服务 (4)浏览器访问,验证Apache服务 (1) 安装Filebeat (2)设置filebeat的主配置文件 (3)启动filebeat (4)在Logstash组件所在节点上,新建一个Logstash配置文件(CentOS 7-3) (

    2024年02月16日
    浏览(44)
  • 简单认识ELK日志分析系统

    ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用, 完成更强大的用户对日志的查询、排序、统计需求。 好处 : (1)提高安全性 (2)集中存放日志 (3)缺陷:对日志的分析困难 1 、ElasticSearch 概述 (1)提供了一个分布式

    2024年02月14日
    浏览(34)
  • Linux--ELK日志分析系统

            ELK是一套针对日志数据做解决方案的框架,分别代表了三款产品: - E: ElasticSearch(ES),负责日志的存储和检索; - L:Logstash,负责日志的收集,过滤和格式化; - K:Kibana,负责日志的展示统计和数据可视化; ElasticSearch ElasticSearch是一个基于Lucene的搜索服务器。它

    2023年04月27日
    浏览(73)
  • ELK、ELFK日志分析系统

    ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用, 完成更强大的用户对日志的查询、排序、统计需求。 1.1.1 ElasticSearch ElasticSearch是基于Lucene(一个全文检索引擎的架构)开发的分布式存储检索引擎,用来存储各类日志。 E

    2024年02月13日
    浏览(49)
  • ELK+FileBeat日志分析系统

    ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。 Elasticsearch是个开源分布式搜索引擎

    2024年02月08日
    浏览(39)
  • ELK 企业级日志分析系统的概念、ELK Elasticsearch 集群部署

    1、ELK 简介 ELK平台是一套完整的日志集中处理解决方案,将 ==ElasticSearch、Logstash 和 Kiabana ==三个开源工具配合使用, 完成更强大的用户对日志的查询、排序、统计需求。 ElasticSearch 是基于Lucene(一个全文检索引擎的架构)开发的分布式存储检索引擎,用来存储各类日志。 E

    2024年02月16日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包