小编Pra*_*kor的帖子

如何阻止logstash在ElasticSearch中创建默认映射

我正在使用logstash将日志提供给ElasticSearch.我正在将logstash输出配置为:

input {
file {
            path => "/tmp/foo.log"
            codec =>
                    plain {
                    format => "%{message}"
            }
    }
}
output {
        elasticsearch {
                        #host => localhost 
                        codec => json {}
                        manage_template => false
                        index => "4glogs"
                }
}
Run Code Online (Sandbox Code Playgroud)

我注意到,一旦我启动logstash,它就会在ES中创建一个映射(日志),如下所示.

{
    "4glogs": {
        "mappings": {
            "logs": {
                "properties": {
                    "@timestamp": {
                        "type": "date",
                        "format": "dateOptionalTime"
                    },
                    "@version": {
                        "type": "string"
                    },
                    "message": {
                        "type": "string"
                    }
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如何防止logstash创建此映射?

更新:

我现在也解决了这个错误."[logs]的对象映射尝试解析为对象,但是得到了EOF,是否有一个具体的值提供给它?"

正如John Petrone在下面所述,一旦定义了映射,就必须确保您的文档符合映射.在我的例子中,我已经定义了"type:nested"的映射,但是logstash的输出是一个字符串.所以我从我的logstash配置中删除了所有编解码器(无论是json还是普通的),这使得json文档无需更改即可通过.

这是我的新logstash配置(带有一些额外的多行日志过滤器).

input {
    kafka { …
Run Code Online (Sandbox Code Playgroud)

elasticsearch logstash

19
推荐指数
1
解决办法
3万
查看次数

Apache Kafka的交互式管理shell

我正在试验卡夫卡.我能够获得一个基本的集群,其中包含Zookeeper和运行并生成/使用数据的代理.Kafka是否有交互式管理shell/cli?我想有一个关于所有主题的视图,一个主题的分区,产品/消费率,持续的数据量等等.我在网上搜索并查看了安装.我找不到任何管理工具.

谢谢,

apache-kafka

5
推荐指数
2
解决办法
4861
查看次数

Logback 替换正则表达式来检测空值

我正在尝试使用 logback 的替换功能,以免在我的 MDC 日志模式中打印空值。 http://logback.qos.ch/manual/layouts.html#replace

我试图遵循这里的示例 http://logogin.blogspot.com/2013/04/logback-mdc-and-empty-values.html

一些背景

90% 的时间我的日志模式都会打印

2014-08-28 11:30:27,014  emp:Peter org:IT Expense submitted
Run Code Online (Sandbox Code Playgroud)

打印时间的 5%

2014-08-28 11:30:27,014  emp: org: Cleanup jobs.
Run Code Online (Sandbox Code Playgroud)

这是因为在后一种情况下,不需要在 MDC 上提供 emp 和 org。对于这些情况,我希望 emp: 和 org: 根本不出现在日志行中。

期望的

2014-08-28 11:30:27,014  Cleanup jobs.
Run Code Online (Sandbox Code Playgroud)

可能的解决方案是更换

这是我的变量和我正在使用的附加器。这个想法是,对于没有 emp 和 org 值的情况, mdcPattern 将解析为空字符串。

<variable scope="context" name="mdcPattern" value="%replace( emp:%X{empName} org:%X{orgName} ) {'[a-z]+:( |$)', ''}"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%d ${mdcPattern} %thread %-5level %logger{25} - %msg%n</pattern>
    </encoder>
</appender>
Run Code Online (Sandbox Code Playgroud)

但是替换正则表达式不起作用。我看到日志行为:

2014-08-28 11:30:27,014  emp: org: {'[a-z]+:( |$
Run Code Online (Sandbox Code Playgroud)

我的正则表达式有点弱。我似乎无法理解为什么替换模式会按原样出现在我的日志行中。任何帮助是极大的赞赏。

regex logback mdc

4
推荐指数
1
解决办法
5844
查看次数

标签 统计

apache-kafka ×1

elasticsearch ×1

logback ×1

logstash ×1

mdc ×1

regex ×1