ELK 7.12.0 搭建微服务日志系统

4 篇文章 0 订阅
1 篇文章 0 订阅

官方文档:

数据收集:filebeat

数据处理:logstash

数据存储:elasticsearch

数据查看:kibana

logstash+elasticsearch+kibana 有docker-compose的组合安装套件,安装十分简单 ELK套件。git拉下代码后直接docker-compose up 自动下载镜像并启动。

参考配置:filebeat所有配置项

filebeat.yml

# 输入配置,可以有多个输入源
filebeat.inputs:
- type: log
  # 监听文件路径,**代表匹配多层路径,好像最多8层。
  paths:
    - '/data/**/console.log'

  # 多行配置,可以将多行合并,处理一些不在一行输出的日志。比如java的堆栈信息。
  multiline.type: pattern
  # 匹配正则表达式。含义:以 'go:32' 结尾或者以 '[' 开头的作为一个事件。
  multiline.pattern: '(^.*go:[0-9]*$)|(^\[)'
  # 是否取反
  multiline.negate: false
  # 多行规则,after后面附上, before前面的附上
  multiline.match: after
  # 最大行数,默认500
  multiline.max_lines: 5
  # 事件时间限制,超时不再等待,默认5s.
  #multiline.timeout: 5s
  # Do not add new line character when concatenating lines.
  #multiline.skip_newline: true


- type: log
  paths:
    - '/data/**/*.log'
  # 排除文件列表,正则表达。含义:排除以stat.log和以console.log结尾的文件
  exclude_files: ['stat.log$','console.log$']
  # 排除以DBG开头的行
  #exclude_lines: ['^DBG']
  # 只收集以ERR或WARN开头的行
  #include_lines: ['^ERR', '^WARN']
  # 添加字段,默认这个写字段加载field字段下
  #fields:
  #  level: debug
  #  review: 1
  # 将字段加载root下
  #fields_under_root: false

# 输出配置
output.logstash:
  hosts: ["127.0.0.1:5044"]

logstash/pipeline/logstash.conf

input {
        # 默认配置
        beats {
                port => 5044
        }

        tcp {
                port => 5000
        }
}

## Add your filters / logstash plugins configuration here

filter {
        # 删除log.file.path中包含stat.log的数据。log.file.path中存储着filebeat的源文件路径
        if ("stat.log" in [log][file][path]) {
                drop {}
        }
        # 修改字段
        mutate {
                # 添加一个字段:input-type,值为 agent.type和input.type值的组合。形如filebeat-log
                add_field => { "input-type" => "%{[agent][type]}-%{[input][type]}" }
                # 移除一些不用的字段
                remove_field => ["agent","ecs","tags","input","host"]
        }
        # 配置json解析
        json{
                # 存有json的数据源
                source => "message"
                # 跳过json不能解析的数据
                skip_on_invalid_json => true
                # 输出的json根字段。
                target => "json"
        }
        # 根据路径筛选,在es中存于不同的index。
        # @metadata字段添加的字段不会存入es,相当于临时变量。
        # {+YYYY.MM} 根据需要也可以是 {+YYYY.MM.dd}
        if "gateway" in [log][file][path]{
                mutate { add_field => { "[@metadata][target_index]" => "gateway-service-%{+YYYY.MM}" } }
        }
        else if "swagger" in [log][file][path]{
                mutate { add_field => { "[@metadata][target_index]" => "swagger-service-%{+YYYY.MM}" } }
        }
        else if "auth-service" in [log][file][path] {
                mutate { add_field => { "[@metadata][target_index]" => "auth-service-%{+YYYY.MM}" } }
        # 还有其他的仿照添加即可
        }else {
                mutate { add_field => { "[@metadata][target_index]" => "other-service-%{+YYYY.MM}" } }
        }
}

output {
        elasticsearch{
                index => "%{[@metadata][target_index]}"
                hosts => ["elasticsearch:9200"]
        }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值