我想使用logstash将stdout从正在运行的应用程序发送到logz.io。应用程序和logstash都是由docker-compose管理的docker镜像,它执行设置(pull images,network_mode,logging drivers等)。 Logstash输入通过gelf-input-plugin处理。运送到logz.io是通过tcp-output-plugin处理的。
logstash.conf:
input { gelf {
type => docker
port => 12201 } }
filter { mutate { add_field => { "token" => "${LOGZIOTOKEN}" } } }
output { tcp {
host => "listener.logz.io"
port => 5050
codec => json_lines } }
摘自docker-compose.yml:
application:
...
logging:
driver: "gelf"
options:
gelf-address: "udp://0.0.0.0:12201"
这可以按预期工作。
现在我需要使用一个TCP代理服务器,将日志从主机(运行logstash实例)发送到logz.io.不幸的是我没有找到logstashs tcp-output-plugin的代理扩展。有没有人对此问题有任何建议?
答案 0 :(得分:0)
logstash的http输出插件具有属性proxy。你必须使用logz.io端口运送curl:8070(http)/ 8071(https)。
工作配置如下所示:
output { http {
url => "https://listener.logz.io:8071?token=${LOGZIOTOKEN}"
http_method => "post"
format => "json"
content_type => "application/json"
proxy => {
host => "${PROXYHOST}"
port => "${PROXYPORT}"
scheme => 'http'
user => "${PROXYUSER}"
password => "${PROXYPW}"
}}}
您不需要像tcp-output-plugin配置中那样将过滤器发送到logz.io。只需添加输入并发货!