Logstash Input和output的http配置

Logstash很强大,之前使用过input中的beat插件,现改成用http插件,在这里又跳坑了,留个纪念。

  1. 配置http
input {
    http {
      codec => plain {
        charset=>"GB2312"
      }
    }
}

特别注意,在python代码中 data数据 通过encode(‘utf8’)后,传入logstash,即使在解码回,还是回不到原来的。所以这里用了GB2312。

  1. 启动logstash,开启8080端口

  2. python中代码调用

    post_url = 'http://192.168.220.123:8080/'
    #以上地址为logstash的访问地址

    postData ={'test': '2017-08-15 18:25:22|20.63.150.241|上海|23124@etest'}
    data = urllib.parse.urlencode(postData)
    data = data.encode('utf8')
    req = urllib.request.Request(post_url, data)
    response = urllib.request.urlopen(req) 
    page = response.read()
    status = response.getcode()
    result =   post_url + '|' + str(status) + '\n'
    print (result)
  1. 在通过http接口吐出数据
 http {
       http_method => "post"
       url => "http://192.168.220.123:6070/report/playstatus?log="
       #接数据的地址
       format => "message"
       headers => ["X-My-Header", "%{host}"]
       message => "%{message}"
    }

特别注意,logstash的output的http怎么带参数的问题,在之前尝试时将参数直接在写log=后面,当参数中存在空格或其他特殊字符时 到接口应用中就会到500错误。
而http流是将body转成event,可以将参数信息放在body中,接口应用去读body的内容即可。

关于其他Logstash配置可以参考logstash配置文件常用参数

    原文作者:灼灼2015
    原文地址: https://www.jianshu.com/p/c1d0795a12aa
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞