关于logstash:ELK实践

58次阅读

共计 740 个字符,预计需要花费 2 分钟才能阅读完成。

整体架构:

逻辑架构:

一个零碎(project)蕴含多个服务(service),一个服务有多个正本,elk 零碎须要将不同零碎的日志对立归集,按 project-service-date 归集到 index 便于查看系统日志,防止寻找零碎所有正本日志的繁琐。
Filebeat 定义所采集的零碎、服务及其日志地址,发送到 project-service 的 topic。Logstash 订阅 kafka 以该 project 结尾所有的 topic,通过对立解析后增加日期信息,发往 project-service-date 的 index 中。
如果须要采集其余系统日志,更改 filebeat 的 project,service 及日志地址,并在 logstash 增加新的数据源(project-*)即可。

filebeat:采集日志发往 kafka

  • input:

    • 配置日志地址,监听 *All.log 文件,不采集 error,防止日志反复采集
    • 定义 project 和 service
    • 配置换行,如果非日期结尾,则合并至下一行,便于采集堆栈报错信息
  • Output:

    • kafka:topic 为 projectservice
  • 部署:

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

Logstash:解析数据发往 es

  • input:kafka

    • group_id:分布式环境下 group_id 应该雷同,可横向扩大
    • topic_pattern,通过正则解决同一 project 的所有 topic
  • filter:

    • 通过 mutate,json,grok
    • 一条日志中蕴含:日志工夫,线程号,日志级别,日志信息。
    • 把日志工夫里的日期解析进去,做为 index 里的 date,插入 es。
  • output:

    • 可依据不同的条件发送至不同的数据库
正文完
 0