有关elasticsearch的一些操作和问题

2019-04-11  本文已影响0人  野草_疯长

       对于现在很多的生产环境来说,都会舍弃logstash来使用filebeat,但是日志在kibana显示的时候,格式效果不是很好,这就需要用到es中的ingest node -->官方文档   

  总的来说,它就是用来代替logstash对日志解析的,能在es进行索引之前,对日志进行一个解析。

话不多说,直接上代码:

这一段代码是在es中添加一个管道,用于筛选出filebeat输出的日志。


curl -X PUT "localhost:9200/_ingest/pipeline/filebeat-log" -H 'Content-Type: application/json' -d'

{

  "description" : "describe pipeline",

  "processors" : [

    {

      "grok" : {

        "field": "message",

        "patterns":  ["\\[%{TIMESTAMP_ISO8601:log_time}\\] %{NOTSPACE:thread} %{NOTSPACE:log_level} %{NOTSPACE:java_class} - %{GREEDYDATA:content}"]

      }

    },

    {

    "date": {                  #这一部分是为了使日志时间和本地时间对应的设置。

    "field": "log_time",

    "formats": ["yyyy-MM-dd HH:mm:ss:SSS"],

    "timezone": "Asia/Shanghai",

    "target_field": "@timestamp"

    }

    }

  ]

}

'


然后在 filebeat.yml 配置文件添加如下内容,为你的管道命名。

这样就完成了所有的工作。这时启动filebeat, 如果如出以下错误信息

 ERROR pipeline/output.go:92 Failed to publish events: temporary bulk send failure 1 大概率是因为你发送的日志格式无法与grok表达式匹配,修改processor定义json

cat  /etc/nginx/nginx.conf

把原来的format注释掉 换上json格式的访问日志输出   nginx -s reload

上一篇下一篇

猜你喜欢

热点阅读