涉以及实践

前面片篇稿子里我们介绍了nxlog的日记收集与转账《ELK系列~Nxlog日志收集加转发(解决log4日记换行导致json转换失败问题)》,今天我们重点总结一下,在跟log4和fluentd及elasticsearch配合工作经常索要留意的几只点,这几乎独点呢是咱常遇上的坑,希望得以协助到大家!我们打日记产生端log4始发说。

  1. log4需留意的,编码和日戳格式
  2. nxlog需要注意output里对情节处理
  3. fluentd需要注意类型以及format的确定

1
log4生日志,格式必须是utf-8,ansi编码对中文解析时起题目,主要代表以fluentd到elasticsearch写多少经常

      <datePattern value="yyyyMMdd&quot;Error.log&quot;" />
      <encoding value="utf-8" /> 
      <layout type="log4net.Layout.PatternLayout">
      </layout>
    </appender>

2
log4日志里,时间戳@timestamp,需要是UTC时间,格式为yyyy-MM-ddTHH:mm:ss.fff+0800

        private static string FormatStr(string level, string message, Exception ex)
        {
            var json = JsonConvert.SerializeObject(new
            {
                target_index = projectName,
                timestamp = DateTime.Now.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.fff+0800"),
                Level = level.ToString(),
                Message = message,
                StackTrace = ex?.StackTrace
            });
            json = json.Replace("target_index", "@target_index").Replace("timestamp", "@timestamp");
            return json;
        }

3
nxlog日记收集时,由于log4发生的数目还是\r符号,所以于nxlog.conf里要对output进行过滤,当然\n,使它们化有限久消息,这样重点信息里就没有\r了,json解析时虽未见面时有发生题目

<Output out>
    Module      om_tcp
    Host        192.168.200.214
    Port        24224

    Exec $raw_event =$raw_event + "\n";
</Output>

4
fluentd的布里,类型需要是tcp,格式format需要是none

<source>
    @type tcp
    tag windows.log
    format none
    port 24224
    bind 0.0.0.0
  </source>
  <filter docker.**>
    type parser
    format json
    time_format %Y-%m-%dT%H:%M:%S.%L%Z
    key_name log
    reserve_data true
  </filter>
  <match **>
    @type stdout
  </match>

5
最后便是打响写入elasticsearch,通过kibana就得翻日志了

图片 1

请把习作为同样种植习惯!

恳请将积攒与总成一种植上的不二法门!

感各位的看!

 

相关文章

网站地图xml地图