ELK实践

总体架构:
image.png
逻辑架构:
image.png数据库

一个系统(project)包含多个服务(service),一个服务有多个副本,elk系统须要将不一样系统的日志统一归集,按project-service-date归集到index便于查看系统日志,避免寻找系统全部副本日志的繁琐。
Filebeat定义所采集的系统、服务及其日志地址,发送到project-service的topic。Logstash订阅kafka以该project开头全部的topic,通过统一解析后添加日期信息,发往project-service-date的index中。
若是须要采集其余系统日志,更改filebeat的project,service及日志地址,并在logstash添加新的数据源(project-*)便可。json

filebeat:采集日志发往kafka架构

  • input:分布式

    • 配置日志地址,监听*All.log文件,不采集error,避免日志重复采集
    • 定义project和service
    • 配置换行,若是非日期开头,则合并至下一行,便于采集堆栈报错信息
  • Output:spa

    • kafka:topic为projectservice
  • 部署:线程

    • 把配置打进镜像,在swarm集群中以global模式部署,
    • Docker-compose中把监听的日志文件映射进容器

Logstash:解析数据发往es日志

  • input:kafka部署

    • group_id:分布式环境下group_id应该相同,可横向扩展
    • topic_pattern,经过正则处理同一project的全部topic
  • filter:kafka

    • 通过mutate,json,grok
    • 一条日志中包含:日志时间,线程号,日志级别,日志信息。
    • 把日志时间里的日期解析出来,作为index里的date,插入es。
  • output:input

    • 可根据不一样的条件发送至不一样的数据库
相关文章
相关标签/搜索