首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Logstash logback编码器,logstash转发器和logstash

Logstash logback编码器,logstash转发器和logstash
EN

Stack Overflow用户
提问于 2015-08-31 16:44:56
回答 2查看 3.1K关注 0票数 2

考虑到建议https://blog.codecentric.de/en/2014/10/log-management-spring-boot-applications-logstash-elastichsearch-kibana/,我设置了logstash编码器+ logstash转发程序,以将所有内容推送到logstash,并最终在ElasticSearch中索引所有内容。

这是我的配置:

logstash.xml

代码语言:javascript
复制
<included>
    <include resource="org/springframework/boot/logging/logback/base.xml"/>

    <property name="FILE_LOGSTASH" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}.json"/>
    <appender name="LOGSTASH"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <encoder>
            <pattern>${FILE_LOG_PATTERN}</pattern>
        </encoder>
        <file>${FILE_LOGSTASH}</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <fileNamePattern>${FILE_LOGSTASH}.%i</fileNamePattern>
        </rollingPolicy>
        <triggeringPolicy
            class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
        <encoder class="net.logstash.logback.encoder.LogstashEncoder">
            <includeCallerInfo>true</includeCallerInfo>                
        </encoder>
    </appender>

    <root level="INFO">
        <appender-ref ref="LOGSTASH"/>
    </root>
</included>

logstash-forwarder.conf

代码语言:javascript
复制
{
    "network": {
        "servers": [
            "logstash:5043"
        ],
        "ssl certificate": "/etc/pki/tls/certs/logstash-forwarder/logstash-forwarder.crt",
        "ssl key": "/etc/pki/tls/private/logstash-forwarder/logstash-forwarder.key",
        "ssl ca": "/etc/pki/tls/certs/logstash-forwarder/logstash-forwarder.crt",
        "timeout": 15
    },
    "files": [
        {
            "paths": [
                "${ENV_SERVICE_LOG}/*.log.json"
            ],
            "fields": {
                "type": "${ENV_SERVICE_NAME}"
            }
        }
    ]
}

logstash.conf

代码语言:javascript
复制
input {
    lumberjack {
        port => 5043

        ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder/logstash-forwarder.crt"
        ssl_key => "/etc/pki/tls/private/logstash-forwarder/logstash-forwarder.key"
    }
}

output {
    elasticsearch { host => "localhost" }
}

一切正常,日志保存在ElasticSearch中。

此时,我希望能够指定要由ElasticSearch索引的其他字段,例如日志级别。搜索@message内容是否存在错误或警告并不那么有用。

我该怎么做?在ElasticSearch中,应该更改哪些配置以使该级别显示为索引字段?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-31 18:28:55

您要寻找的是一个logstash过滤器,它将作为输入和输出节的对等点在索引器上使用。

有大量的过滤器(参见医生),但是您可以使用格洛克{}将regexp应用到您的消息字段并提取日志级别。

您没有包含示例消息,但是,给定一个类似于"foo 123 bar“的字符串,此模式将将"123”提取到名为loglevel的整数字段中:

代码语言:javascript
复制
grok {
    match => ["message", "foo %{NUMBER:loglevel:int} bar"]
}

有相当数量的信息,在网络上写格格模式。试试这一个

票数 1
EN

Stack Overflow用户

发布于 2017-03-03 02:52:00

代码语言:javascript
复制
logstash config file:
input {
  file {
    path =>  [ "/tmp/web.log" ]
  }
}
filter {
    grok {
        match => [ "%{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:severity} %{GREEDYDATA:message}" ]
       }
    }
output {
    elasticsearch {
        host => "127.0.0.1"
        index => "web-%{+YYYY.MM.dd}"
    }
}

您可以使用“add_tag”或“add_field”来指定特殊字段

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32316044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档