日志传输路径如下:

filebeat->redis->logstash->es

在filebeat配置文件中,收集日志的时候配置的有如下参数:

  fields:
log_source: messages

表示的是会把log_source作为fields的二级字段

若是配置如下,表示的是会把log_source作为顶级字段:

  fields:
log_source: messages
fields_under_root: true

使用这个字段来作为区分不同应用日志的来源;

在logstash中从redis读取后,output给es的时候,根据上述不同的字段来创建不同的应用日志索引。

常见的写法是多使用if条件进行区分,如下所示:

  if [fields][log_source] == 'test_custom' {
elasticsearch {
hosts => ["http://172.17.107.187:9203", "http://172.17.107.187:9201","http://172.17.107.187:9202"]
index => "filebeat_test_custom-%{+YYYY.MM.dd}"
user => "elastic"
password => "escluter123456"
}
} if [fields][log_source] == "test_user" {
elasticsearch {
hosts => ["http://172.17.107.187:9203","http://172.17.107.187:9201","http://172.17.107.187:9202"]
index => "filebeat_test_user-%{+YYYY.MM.dd}"
user => "elastic"
password => "escluter123456"
}
}

这样写也能使用,但是考虑到假设这个区分字段比较多的话,那这得写多少个if条件呀,所以可以使用如下的用法:

在创建索引的时候使用上这个区分用的字段,具体如下:

elasticsearch {
hosts => ["http://172.17.107.187:9203","http://172.17.107.187:9201","http://172.17.107.187:9202"]
index => "filebeat_%{[fields][log_source]}-%{+YYYY.MM.dd}"
user => "elastic"
password => "escluter123456"
}

说明:%{[fields][log_source]}表示的是获取区分字段的值

若是顶级字段则是这样的用法:%{[log_source]}

logstash中output{}的另类写法的更多相关文章

  1. logstash的output配置中指定elasticsearch的template

    转自:https://blog.csdn.net/felix_yujing/article/details/78930389 之前采用的是通过filebeat收集nginx的日志,直接到elastic ...

  2. logstash中的redis插件

    redis作为logstash中的官方broker,既有input插件,还有output插件. redis input插件 data_type属性: 有三种类型, list -> BLPOP - ...

  3. Logstash中如何处理到ElasticSearch的数据映射

    Logstash作为一个数据处理管道,提供了丰富的插件,能够从不同数据源获取用户数据,进行处理后发送给各种各样的后台.这中间,最关键的就是要对数据的类型就行定义或映射. 本文讨论的 ELK 版本为 5 ...

  4. logstash的output插件

    logstash 的output插件 nginx,logstash和redis在同一台机子上 yum -y install redis,vim /etc/redis.conf 设置bind 0.0.0 ...

  5. .net EasyTree显示所级层级(无限级、整层级颗树)的另类写法。非递归

    获取整颗树的另类写法.非递归 //获取所有的菜单 List<T_Menu> menu = bll.getMenuByUsesrID("8189a7c1-6f15-4744-b6c ...

  6. ORACLE 查询一个数据表后通过遍历再插入另一个表中的两种写法

    ORACLE 查询一个数据表后通过遍历再插入另一个表中的两种写法 语法 第一种: 通过使用Oracle语句块  --指定文档所有部门都能查看 declare cursor TABLE_DEPT and ...

  7. web工程中URL地址的写法

    在开发中我们不可避免的要碰到许多需要写URL地址的情况,这常常让我们感到头疼.下面笔者推荐一种简单的做法.URL地址分为绝对路径和相对路径两种.相对路径又分为相对资源路径和相对根路径.显然绝对路径在开 ...

  8. jQuery 1.4.4 中 function( window, undefined ) 写法原因

    读 jQuery 1.4.4 版本代码的时候,发现下面的写法: (function( window, undefined ) { ... // code goes here })(window); w ...

  9. logstash 中的贪婪匹配

    logstash 中的贪婪匹配: 10.252.142.174 - - [06/Sep/2016:08:41:36 +0800] "GET /api/validate/code/send?m ...

随机推荐

  1. 智能指针思想实践(std::unique_ptr, std::shared_ptr)

    1 smart pointer 思想 ​ 个人认为smart pointer实际上就是一个对原始指针类型的一个封装类,并对外提供了-> 和 * 两种操作,使得其能够表现出原始指针的操作行为. ​ ...

  2. 【一知半解】synchronied

    synchronized是什么 synchronized是java同步锁,同一时刻多个线程对同一资源进行修改时,能够保证同一时刻只有一个线程获取到资源并对其进行修改,因此保证了线程安全性. synch ...

  3. 千万不要把Request传递到异步线程里面!有坑!

    你好哇,我是歪歪. 前几天在网上冲浪的时候看到一篇技术文章,讲的是他把一个 request 请求传递到了线程池里面,然后遇到了一个匪夷所思的情况. 他写了这篇文章,把自己针对这个问题的探索过程分享了出 ...

  4. 多校B层冲刺NOIP20211111模拟12

    题面:PDFhttp://xn--gwt928b.accoders.com/pdf/10248/10248.pdfhttp://xn--gwt928b.accoders.com/pdf/10248/1 ...

  5. Object类的toString方法和equals方法

    Object类 概述 java.long.Object 类是java语言中的根类,即所有类的父类.它中描述的所有方法子类都可以使用.在对象实例化的时候,最终的父类就是Object 类Object是类层 ...

  6. 编译式安装MYSQL

    安装所需组件 实际上只需要这四个配置即可 升级boot开始 升级结束 重新执行cmake make && make install 启动mysql 发现启动失败 #####原因:这是由 ...

  7. Linux—搭建Apache(httpd)服务

    1.httpd简介? http是Apache超文本传输协议服务器的主程序.它是一个独立的后台进程,能够处理请求的子进程和线程. http常用用的两个版本是httpd-2.2和httpd-2.4 Cen ...

  8. Java面试题(二)--MySQL

    1 存储引擎 1.简单描述一个Mysql的内部结构? MySQL的基本架构示意图: 大体来说,MySQL可以分为server层和存储引擎层两部分. ① server层包括连接器.查询缓存.分析器.优化 ...

  9. Z-Libary最新地址.Z-Libary无法登录解决方案

    Z-Library.世界上最大的数字图书馆. 如果你知道了一本书的书名,那在Z-Library上基本上都可以找到进行下载, Z-Library 有很多入口,分为官方和民间镜像.官方自己做了个跳转站点, ...

  10. React报错之Type '() => JSX.Element[]' is not assignable to type FunctionComponent

    正文从这开始~ 总览 当我们尝试从函数组件中返回元素组成的数组时,会产生"Type '() => JSX.Element[]' is not assignable to type Fu ...