ELK学习笔记之logstash将配置写在多个文件
2023-09-27 14:23:26 时间
0x00 概述
我们用Logsatsh写配置文件的时候,如果读取的文件太多,匹配的正则过多,会使配置文件动辄成百上千行代码,可能会造成阅读和修改困难。这时候,我们可以将配置文件的输入、过滤、输出分别放在不同的配置文件里,甚至把输入、过滤、输出再次分离,放在不同的文件里。
这时候,后期再需要增删改查内容的时候,就容易维护了。
0x01 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个整体的配置文件
0x02 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是可以共用的 //但是输出的索引需要分别建立,以提高辨识度
0x03 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解析, #也可以通过类似的方法判断
相关文章
- Centos修改文件打开数限制
- Linux远程连接工具:SecureCRT【编辑】、SecureFX Portable【上传文件、下载文件;不需要再配置Linux端的ftpd】
- NGINX配置显示目录文件列表
- 老程序员转测试 配置测试环境设置共享文件 提高团队效率
- spring配置hibernate映射文件-------通配符
- 将windows下的文件上传到Linux服务器上
- 威联通独家首创Qsirch快速搜索NAS内文件
- HDFS 开发中的文件配置优先级
- Object-c:两种文件读写的对比
- linux之touch命令修改文件的时间戳
- Maven的pom.xml文件结构之基本配置parent和继承结构
- 五种方式让你在java中读取properties文件内容不再是难题
- 开机提示0xc0000428无法验证此文件的数字签名的解决方法
- git中 .ignore文件的配置 忽略不想上传的文件
- aptitude命令解决依赖问题、使用阿里源、Ubuntu上不同颜色代表什么文件
- springboot maven resource资源文件打包配置
- linux 命令——文件管理 ls
- python3:读取目录下的文件名字生成html所需的格式
- 【C#基础】C# 文件与IO
- Nginx配置 隐藏入口文件index.php
- vim学习笔记一(环境配置及编译文件)
- SpringMVC常用配置(二),最简洁的配置实现文件上传
- Python Anaconda导出(export)环境到environment.yml文件
- 2.File Inclusion配置dvwa——小白笔记——文件包含漏洞
- JAVA向EXE文件尾追加配置信息,用于解决局版客户端的程序IP配置问题
- Linux中环境变量文件及配置
- mysql 批处理文件出错后继续执行
- 李洪强iOS开发之-PCH文件的配置
- C# 命令行如何静默调用 del 删除文件
- Qt文本读写之一:输入输出设备和文件操作
- 【jvm我能讲两小时010】说说class文件中的属性表的理解,以及接触过的属性?