从零搭建ELK在线日志系统

ELK在线日志系统是指使用 Elasticsearch、Logstash 和 Kibana 这三个开源工具构建的一套日志管理和分析系统。ELK是由这三个工具的首字母组合而成的缩写。

ELK在线日志系统能够帮助开发人员和运维人员对大量的日志数据进行实时分析、搜索和可视化展示,以快速定位和解决问题,提高系统的稳定性和性能。

一、安装Filebeat

Filebeat是一个轻量级的开源日志文件数据搜集和传输工具,常用于客户端日志采集上报。

1、下载安装

# mac版本,服务器速度很慢的话,可以下载到到本地后再scp上传服务器
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.14.1-darwin-x86_64.tar.gz
# linux版本
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-8.14.1-linux-x86_64.tar.gz
# 解压缩
tar -xvf filebeat-8.14.1-darwin-x86_64.tar.gz
# 运行程序
cd /home/app/filebeat-8.14.1-darwin-x86_64 && ./filebeat -c filebeat.yml

2、更改配置

官网配置较为繁琐,这里我们使用完全自定义的配置,这里主要是有两个配置文件:

filebeat.yml

# filebeat相关设置
logging.level: info
logging.to_files: true
logging.files:
  path: /home/data/logs/filebeat_logproxy/
  name: filebeat
  keepfiles: 7
  permissions: 0644

# index lifecycle management (ILM)
# 默认不开启索引生命周期管理
setup:
  ilm:
    enabled: false
  template:
    enabled: false

# 输出到es
output:
  elasticsearch:
    worker: 2
    bulk_max_size: 1000
    hosts: ["localhost:9200"]
    username: "elastic"
    password: "xxxx"
    indices:
      - index: "logproxy-%{+yyyy-MM-dd}"

# 加载子模块配置
filebeat.config.inputs:
  enabled: true
  path: conf.d/*.yml

# 暴露http端口
http:
  enabled: true
  host: 0.0.0.0
  port: 5066

# 最大进程数
max_procs: 1

multiline.java.yml

# 类型为日志,默认filebeat自带了多套系统日志的默认采集配置
# 这里主要采集为java服务日志
- type: log
  # 日志路径
  paths:
    - /home/data/logs/*/*.log
    - /home/data/logs/*/*.log.*
  # 设置默认填充字段
  fields:
    type: daemon
    topic: javadaemon
  # 填充字段在最外层
  fields_under_root: true
  # 日志匹配符,这里会匹配两种日志模式,logback日志文件里需要设置为 ###| 开头
  # 1. '[0-9]{4}-[0-9]{2}-[0-9]{2}':表示匹配具有4位数字-2位数字-2位数字格式的日期。例如:2022-01-01
  # 2. '|':表示或者的意思,用于多个模式的选择
  # 3. '^###|':表示匹配以三个'#'字符开头,后面跟一个'|'字符的情况(用于某些特殊标记
  # 4. 注意这里的规则需要与logback相匹配
  multiline.pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}|^\#\#\#\|'
  # 由于java里面存在错误日志,所以需要采取多行合并
  # 此配置使用negate: true和match: after设置来指定任何不符合指定模式的行都属于上一行,详见 Filebeat行匹配规则
  multiline.negate: true
  multiline.match: after
  # 设置忽略旧日志的时间阈值,超过该时间的日志将被忽略
  ignore_older: 5m
  # 尾部监听
  tail_files: true
  processors:
    # 删除特定字段
    - drop_fields:
        fields: ['input','offset','prospector']

注意与logback日志格式相匹配。

二、安装Elasticsearch

Elasticsearch是一个开源的分布式搜索和分析引擎,由Elasticsearch公司开发和维护。它基于Apache Lucene搜索引擎库构建,提供了强大的全文搜索、实时数据分析和可视化的能力。

# 详见上一篇:让你的博客支持仿百度全文搜索!
docker stop es && docker rm es
docker run -d --name es \
    -p 9200:9200 \
    -p 9300:9300 \
    --network=common_container_network \
    --add-host=host.docker.internal:host-gateway \
    -e ES_JAVA_OPTS="-Xms256m -Xmx512m" \
    -e "discovery.type=single-node" \
    -v /home/data/docker/es/data:/usr/share/elasticsearch/data \
    -v /home/data/docker/es/plugins:/usr/share/elasticsearch/plugins \
    -v /home/data/docker/es/config:/usr/share/elasticsearch/config \
    -v /home/data/docker/es/logs:/usr/share/elasticsearch/logs \
    -v /etc/localtime:/etc/localtime:ro \
    elasticsearch:7.17.3

三、安装Kibana

1、docker部署

# 基础配置提取大致同es
docker stop kibana && docker rm kibana
docker run -d --restart=no \
  --network=common_container_network \
  --add-host=host.docker.internal:host-gateway \
  --name=kibana \
  -v /home/data/docker/kibana/config:/usr/share/kibana/config \
  -p 5601:5601 \
  -v /etc/localtime:/etc/localtime:ro \
  kibana:7.17.22

2、相关配置

kibana.yml

server.host: "0.0.0.0"
server.shutdownTimeout: "5s"
elasticsearch.hosts: [ "http://es:9200" ]
elasticsearch.username: "kibana"
elasticsearch.password: "199710es"
monitoring.ui.container.elasticsearch.enabled: true
i18n.locale: "zh-CN"

四、效果截图

1、效果图一

搜索关键字:无。

2、效果图二

搜索关键字:error or exception

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值