sunny123456

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  1796 随笔 :: 22 文章 :: 24 评论 :: 226万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

ELK日志实时分析平台搭建和使用 ELK日志分析平台是指Elasticsearch、Logstash 和 Kibana 三个项目的集合,后面又增加了Filebeat数据采集器。

概述

ELK日志分析平台是指Elasticsearch、Logstash 和 Kibana 三个项目的集合,后面又增加了Filebeat数据采集器。

  • Elasticsearch是一个数据搜索分析引擎。
  • Logstash 是日志数据处理的管理和日志采集器,能从各个客户端/业务系统采集,转换,发送到Elasticsearch。
  • Kibana 则是数据图形/报表的可视化展示。
  • Filebeat 是比Logstash更轻巧的数据采集器

一般而言,日志数据流采用一下两种方案

  • Filebeat负责数据采集日志,然后转发到Logstash进行格式处理并发送到Elasticsearch进行存储,然后管理员通过Kibana实现数据可视化。
  • Filebeat负责数据采集日志,然后进行格式处理并发送到Elasticsearch进行存储,然后管理员通过Kibana实现数据可视化。


    image.png

    本篇文章将对方案二的搭建以及使用进行讲解。

    目的

    • 项目线上出现错误,快速定位问题。
    • 项目节点过多,日志太分散,ELK可以统一管理日志。
    • 方便在大量日志文件中精准搜索关键字
    • 解决开发人员无服务器权限需要查看日志的痛点

    安装

    git clone https://github.com/deviantony/docker-elk.git  # 我下载的是8.6.2版本
    docker-compose up #启动容器 只会启动 elasticsearch、kibana、logstash
    
    
    默认用户:elastic
    
    默认密码:changeme
    
    kibana UI : http://localhost:5601
    
    elasticsearch: http://localhost:9200/
    
    
    
    
    详情可以查看.env 文件
    
    
    
    

    image.png

    设置用户名密码

    输入默认账号密码登录kibana


    image.png

    步骤一


    image.png

    步骤二


    image.png
    image.png

    汉化kibana

    在 /kibana/config/kibana.yml 文件最后添加:i18n.locale: "zh-CN"


    image.png

    配置filebeat 通过filebeat采集日志输出到elasticsearch

    /extensions/filebeat/config/filebeat.yml,
    注意里面的账号密码需要在kibana预先设置好

    setup.kibana:              
      #kibanaIP地址
      host: "http://kibana:5601"
      username: "filebeat_internal"
      password: ${FILEBEAT_INTERNAL_PASSWORD}
    
    
    filebeat.inputs:
    
    
    
    
    
    type: log
    
    enabled: true
    
    paths:
    
    
    
    /usr/share/filebeat/logs/*.log # 这个路径是需要收集的日志路径,是docker容器中的路径
    
    fields:
    
    type: "testing" # 日志标签,区别不同日志,下面建立索引会用到
    
    fields_under_root: true
    
    encoding: utf-8 # 指定被监控的文件的编码类型,使用plain和utf-8都是可以处理中文日志的
    
    multiline.pattern: '^[[0-9]{4}-[0-9]{2}-[0-9]{2}'
    
    multiline.negate: true # 是否需要对pattern条件转置使用,不翻转设为true,反转设置为false。  【建议设置为true】
    
    multiline.match: after # 匹配pattern后,与前面(before)还是后面(after)的内容合并为一条日志
    
    
    
    
    
    
    
    
    
    processors:
    
    
    
    
    
    drop_fields:
    
    
    
    
    去除多余字段
    
    
    fields: ["agent.type","agent.name", "agent.version","log.file.path","log.offset","input.type","ecs.version","host.name","agent.ephemeral_id","agent.hostname","agent.id","_id","_index","_score","_suricata.eve.timestamp","agent.hostname","cloud. availability_zone","host.containerized","host.os.kernel","host.os.name","host.os.version"]
    
    
    fields: ["agent.type","agent.name", "agent.version","log.file.path","log.offset","input.type","ecs.version","host.name","agent.ephemeral_id","agent.hostname","agent.id","_id","_index","_score","_suricata.eve.timestamp","agent.hostname","cloud. availability_zone","host.containerized","host.os.kernel","host.os.name","host.os.version"]
    output.elasticsearch:
    
    hosts: [ http://elasticsearch:9200 ]
    
    indices:
    
    #索引名称,一般为  ‘服务名称+ip+ --%{+yyyy.MM.dd}’。
    
    - index: "testing-%{+yyyy.MM.dd}"
    
    when.contains:
    
    #标签,对应日志和索引,和上面对应
    
    type: "testing"
    
    username: filebeat_internal
    
    password: ${FILEBEAT_INTERNAL_PASSWORD}
    
    

    image.png

    映射日志目录文件

    建立/logs目录,并写入一写测试的日志文件
    /extensions/filebeat/filebeat-compose.yml

    image.png

    启动容器

    # 同时启动elasticsearch、kibana、logstash、filebeat
    docker-compose -f docker-compose.yml -f extensions/filebeat/filebeat-compose.yml up
    

    配置工作空间

    步骤一创建工作区


    image.png

    切换工作区


    image.png

    步骤二
    image.png

    步骤三


    image.png

    步骤四


    image.png

    步骤五


    image.png

    步骤六


    image.png

    image.png

    elasticsearch kibana 提示Your trial license is expired 问题解决

    image.png

    image.png

    选择Basic许可证

    给索引设置生命周期

    1.创建索引生命周期策略,超过30天自动删除索引


    image.png

    image.png

    image.png

    image.png

    2.设置索引模版


    image.png

    image.png

    image.png
    image.png

    image.png

    image.png

    image.png
    PUT _ilm/policy/log_delete_policy
    {
      "policy": {
        "phases": {
          "delete": {
            "min_age": "5m",
            "actions": {
              "delete": {}
            }
          }
        }
      }
    }
    PUT _template/logs_template
    
    {
    
    "index_patterns": ["testing*"],
    
    "settings":{
    
    "index.lifecycle.name": "log_delete_policy"
    
    },
    
    "mappings":{
    
    "properties":{
    
    "message":{
    
    "type": "text",
    
    "fields": {
    
    "keyword": {
    
    "type": "keyword",
    
    "ignore_above": 256
    
    }
    
    }
    
    }
    
    }
    
    }
    
    }
    
    

    原文链接:https://www.jianshu.com/p/fd1fd96b6000
    posted on   sunny123456  阅读(26)  评论(0编辑  收藏  举报
    相关博文:
    阅读排行:
    · DeepSeek 开源周回顾「GitHub 热点速览」
    · 物流快递公司核心技术能力-地址解析分单基础技术分享
    · .NET 10首个预览版发布:重大改进与新特性概览!
    · AI与.NET技术实操系列(二):开始使用ML.NET
    · .NET10 - 预览版1新功能体验(一)
    历史上的今天:
    2020-03-12 SQL Server数据导出Excel
    2020-03-12 把sql server 数据库中数据导出至excel表
    2020-03-12 SqlServer 把数据库表结构导出为Excel
    点击右上角即可分享
    微信分享提示