搭建ELK(ElasticSearch+Logstash+Kibana)日志分析系统(十五) logstash将配置写在多个文件

2023-11-11

摘要
我们用Logsatsh写配置文件的时候,如果读取的文件太多,匹配的正则过多,会使配置文件动辄成百上千行代码,可能会造成阅读和修改困难。这时候,我们可以将配置文件的输入、过滤、输出分别放在不同的配置文件里,甚至把输入、过滤、输出再次分离,放在不同的文件里。
这时候,后期再需要增删改查内容的时候,就容易维护了。


1、logstash如何读取多个配置文件

我们知道在启动logstash的时候,只要加上-f /you_path_to_config_file就可以加载配置文件了,如果我们需要加载多个配置文件,只需要-f /you_path_to_config_directory就可以了。简单说,就是在-f后面加上目录就可以。
注意:目录后面不能加 * 号,否则只会读取一个文件,但是在读取日志文件时,*可以匹配所有,比如sys.log*可以匹配所有以sys.log开头的日志文件,如sys.log1,sys.log2等。

示例如下:

//比如 /home/husen/config/目录下有
//in1.conf、in2.conf、filter1.conf、filter2.conf、out.conf这5个文件

//我们使用 /logstash-5.5.1/bin/logstash -f /home/husen/config启动logtstash
//logstash会自动加载这个5个配置文件,并合并成1个整体的配置文件

2、logstash多个配置文件里的input、filter、output是否相互独立

答案是:NO!

比如:

## in1.conf内容如下:
input{
    file{
        path=>[
            "/home/husen/log/sys.log"
        ]
    }
}

## in2.conf内容如下:
input{
    file{
        path=>[
            "/home/husen/log/error.log"
        ]
    }
}

## out1.conf如下
elasticsearch {
        action => "index"          
        hosts  => "localhost:9200" 
        index  => "from_sys_log"
        codec => "json"
    }

## out2.conf如下
elasticsearch {
        action => "index"          
        hosts  => "localhost:9200" 
        index  => "from_error_log"
        codec => "json"
    }
//这几个配置文件的目的是:
//想把in1.conf读进来的sys.log的索引建立为from_sys_log
//把in.conf读进来的error.log的索引建立为femo_error_log

//logstash-5.5.1/bin/logstash -f /home/husen/config

//启动之后,会发现in1.conf的日志被输出了两次,in2.conf读进来的日志也被输出了两次

//结论:logstash读取多个配置文件只是简单的将所有配置文件整合到了一起!
//如果要彼此独立,需要自己加字段,然后判断一下
//比如读取来不同不同服务器的同样格式的日志,那么filter是可以共用的
//但是输出的索引需要分别建立,以提高辨识度

3、logstash读取多个配置文件建议的配置方法

如果要在配置文件中,独立一些部分,又要共用一些部分,比如我上门提高同样的日志来自不同的服务器,需要用同样的filter,但是建立不同的索引的问题,该怎么办?
建议使用tags或者type这两个特殊字段,即在读取文件的时候,添加标识符在tags中或者定义type变量。

示例如下:

## in1.conf内容如下:
input{
    file{
        path=>[
            "/home/husen/log/sys.log"
        ]
        type => "from_sys"
        #tags => ["from_sys"]
    }
}

## in2.conf内容如下:
input{
    file{
        path=>[
            "/home/husen/log/error.log"
        ]
        type => "from_error"
        #tags => ["from_sys"]
    }
}

## out1.conf如下
if [type] == "from_sys"{
#if "from_sys" in [tags]
    elasticsearch {
        action => "index"          
        hosts  => "localhost:9200" 
        index  => "from_sys_log"
        codec => "json"
    }
}

## out2.conf如下
if [type] == "from_error"{
#if "from_error" in [tags]
    elasticsearch {
        action => "index"          
        hosts  => "localhost:9200" 
        index  => "from_error_log"
        codec => "json"
    }
}

//特别地,如果要针对不同的类型日志用不同filter来grok解析,
//也可以通过类似的方法判断

嗯哼,搞定!


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

搭建ELK(ElasticSearch+Logstash+Kibana)日志分析系统(十五) logstash将配置写在多个文件 的相关文章

随机推荐

  • 图像分类篇:实现pytorch官网demo(LeNet)

    跟着b站up主学习整理 2 1 pytorch官方demo Lenet 哔哩哔哩 bilibili 目录 一 CNN的雏形 LeNet网络结构 二 官网demo文件 三 代码实现 1 model py 2 train py 3 predic
  • 最酷炫的Python进度条使用教程

    原文链接 https mp weixin qq com s gRpNq15bX4OgpiY5NNO OQ 效果展示 基础使用 导入 alive progress 库 from alive progress import alive bar
  • overleaf入门教程

    overleaf入门教程 中文学习文档 供自己学习记录 1 编译中文 输入内容为中文时 有两种方式 需要将 documentclass article 改为 documentclass ctexart 或者引用宏包 usepaceage c
  • 获取每个年龄段的人数

  • Android 实现无需权限的悬浮球效果,可适配至Android 10

    前言 最近闲来无事 突然想起搞一下悬浮球 之前的项目的悬浮球一直都需要授权 android6 0以后需要手动授权 悬浮球使用时就非常不便 这里为大家带来一种无需权限的悬浮球实现方式 无需权限 无需权限 功能 自动贴边 显示红点 隐藏红点 自
  • 微信小程序—tabBar导航栏

    1 什么是tabBar tabBar是移动端应用常见的页面效果 用于实现多页面的快速切换 小程序中常分为 底部 tabBar 顶部 tabBar 2 tabBar 节点的配置项 position tabBar的位置 仅支持bottom to
  • python操作mysql数据库详解

    使用Python操作MySQL数据库 MySQL是一种关系型数据库管理系统 它可以用来存储和管理大量的数据 之前介绍了大部分主流数据库 今天将介绍如何使用Python来操作MySQL数据库 安装MySQL 首先 我们需要安装MySQL服务器
  • 测试数据埋点

    简单理解下 埋点其实就是在程序中的某个位置加一个标记 当用户触发到某个行为的时候 就采集一下数据 然后将数据上报到某个位置进行存储 埋点的最终目的是收集到相关的数据 用于给运营人员提供数据支撑等 什么是埋点测试 埋点也分前端埋点和后端埋 前
  • LR(1)算法

    构造出LR 1 项的规范族 先从起始状态设为CC0 然后对于每一个语法符号构造出下一个CCX 意味着吸收了这个语法符号后可能到达的状态 运用不动点算法不断迭代 构造出CCI 意思是如果输入某个符号 可能到达的状态 吸收算法更精妙 即将状态与
  • 织梦DedeCms文章标题字数限制的解决方法

    织梦系统默认的文章标题字数限制是60 也就是30个汉字 不够用怎么办 很简单 只需两步搞定织梦DedeCms文章标题字数的限制 1 在后台选择系统 gt 其它选项 gt 文档标题最大长度改此参数后需要手工修改数据表修改为需要设置的标题最大长
  • 启动服务失败,Java HotSpot(TM) 64-Bit Server VM warning: error='Cannot allocate memory' (errno=12)

    反复启动 down了又起 没起成功down了又起 反复操作了三遍 应用服务 有多个netty服务端 的时候报这个错误 RealServer Start OK 2018 10 30 15 46 52 INFO 2018 10 30 15 46
  • HDU 1106 排序

    题目 输入一行数字 如果我们把这行数字中的 5 都看成空格 那么就得到一行用空格分割的若干非负整数 可能有些整数以 0 开头 这些头部的 0 应该被忽略掉 除非这个整数就是由若干个 0 组成的 这时这个整数就是0 你的任务是 对这些分割得到
  • 【秒懂+解决方案】git error: The following untracked working tree files would be overwritten by checkout: ...

    问题分析 问题出在 Error 所列出的文件在本地的当前分支下未授权给 git 追踪 但同样命名的文件 也即出现在另一个 远程 分支下的同一文件却正在远程仓库或其它分支被 git 进行追踪 接下来的操作 git merge checkout
  • html5将文字生成图片

    由于canvas能够将画布上的纹理生成数据给img显示出来 所以 我们在html5里面可以实现将文字生成图片显示 首先我书写了一个将文字绘制到canvas上面的函数 然后函数会返回canvas绘制的纹理数据 绘制文字到canvas 判断换行
  • MATLAB三维绘图(四)绘制特殊的三维图

    MATLAB三维绘图 四 绘制特殊的三维图 1 使用pie3绘制三维饼状图 示例 绘制三维饼图 clear all x 0 2 0 1 0 25 0 15 0 16 y 3 5 5 7 10 5 8 5 figure subplot 121
  • 求高手:jquery中的$('.XXX')中的.是什么意思啊

    求高手 jquery中的 XXX 中的 是什么意思啊 问题点数 30分 结帖人montelaa 不显示删除回复 显示所有回复 显示星级回复 显示得分回复 只显示楼主 收藏 montelaa montelaa
  • 2021国赛CISCN 初赛 部分RE writeup

    glass 题目名称 glass 题目描述 Reverse sign in flag形式为 CISCN XXXXX 首先查看apk 界面如下 用AndroidKiller打开 反编译成java源码 这里只是声明了一下checkflag函数
  • 一米OA任意文件读取漏洞

    漏洞描述 一米OA getfile jsp文件过滤不足 导致任意文件读取漏洞 漏洞影响 一米OA 网络测绘 app 一米OA 漏洞复现 出现漏洞的文件
  • 修改kubernetes中Ingress配置解决504网关超时错误

    这里写目录标题 报错信息 解决要点 具体操作 报错信息 报 504网关超时错误 解决要点 增加参数 单位默认为 秒 nginx ingress kubernetes io proxy connect timeout 300 nginx in
  • 搭建ELK(ElasticSearch+Logstash+Kibana)日志分析系统(十五) logstash将配置写在多个文件

    摘要 我们用Logsatsh写配置文件的时候 如果读取的文件太多 匹配的正则过多 会使配置文件动辄成百上千行代码 可能会造成阅读和修改困难 这时候 我们可以将配置文件的输入 过滤 输出分别放在不同的配置文件里 甚至把输入 过滤 输出再次分离