【问题标题】:Distinguishing among multiple syslog docker sources区分多个 syslog docker 源
【发布时间】:2017-09-26 09:21:47
【问题描述】:

我正在设置一个带有多个服务的docker-compose,所有这些都写入一个共同的syslog 容器/服务......这实际上是一个logstash 服务(一个完整的elk 图像作为问题事实上)启用了logstash-input-syslog 插件..

如下(使用自定义5151 端口,因为默认514 由于权限问题而让我很难过):

服务:

  elk-custom:
    image: some_elk_image
    ports:
      - 5601:5601
      - 9200:9200
      - 5044:5044
      - 5151:5151

  service1:
     image: myservice1_image
     logging:
      driver: syslog
      options:
        syslog-address: "tcp://127.0.0.1:5151"

  service2:
     image: myservice2_image
     logging:
      driver: syslog
      options:
        syslog-address: "tcp://127.0.0.1:5151"       

我的问题是如何添加一个字段(option 而不是在logging 下),以便logstash 中的每个日志条目都以一个字段结尾,该字段的值将有助于确定日志是否来自@987654332 @ 或service2

我使用tag 字段设法做到了这一点,但信息最终成为消息的一部分,而不是我可以在elasticsearch 中用于查询的单独字段。 目前,kibana 显示日志条目如下:

@timestamp:2017 年 9 月 26 日 12:00:47.684 syslog_severity_code:5 端口:53,422 syslog_facility:用户级@版本:1 主机:172.18.0.1 syslog_facility_code:1 消息:9 月 26 日 12:00:47 7705a2f9b22a[2128]: [pid: 94|app: 0|req: 4/7] 172.18.0.1 () {40 vars in 461 bytes} [周二 2017 年 9 月 26 日 09:00:47] GET /api/v1/apikeys => 在 5 中生成 74 个字节 毫秒 (HTTP/1.1 401) 2 个 81 字节的标头(核心 0 上的 1 个开关) 类型:syslog syslog_severity:通知标签:_grokparsefailure _id:AV69atD4zBS_tKzDPfyh _type:syslog _index:logstash-2017.09.26 _score: -

据我所知,我们无法定义自定义 syslog-facilities,因为它们是由 syslog RFC 预定义的。

谢谢。

【问题讨论】:

    标签: docker elasticsearch logstash docker-compose syslog


    【解决方案1】:

    最终使用端口复用并基于此条件添加自定义字段:

    docker-compose.yml

    elk-custom:
        image: some_elk_image
        ports:
          - 5601:5601
          - 9200:9200
          - 5044:5044
          - 5151:5151
          - 5152:5152
    
      service1:
         image: myservice2_image
         logging:
          driver: syslog
          options:
            syslog-address: "tcp://127.0.0.1:5151"
    
      service2:
         image: myservice2_image
         logging:
          driver: syslog
          options:
            syslog-address: "tcp://127.0.0.1:5152"       
    

    logstash-conf

    input {
      tcp {
        port => 5151
        type => syslog
        add_field => {'received_from' => 'service1'}
      }
    
      tcp {
        port => 5152
        type => syslog
        add_field => {'received_from' => 'service2'}
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-16
      • 2020-03-13
      • 1970-01-01
      • 1970-01-01
      • 2017-05-16
      相关资源
      最近更新 更多