Logstash:通过代理转发日志到 logz.io
Logstash: forwardings logs via proxy to logz.io
我想使用 logstash 将标准输出从 运行 应用程序发送到 logz.io。应用程序和 logstash 都是由 docker-compose 管理的 docker 映像,它负责设置(拉取映像、network_mode、日志驱动程序等)。 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 的代理扩展。有人对这个问题有建议吗?
logstash 的 http 输出插件具有代理属性。您必须使用 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。只需添加输入并发送即可!
我想使用 logstash 将标准输出从 运行 应用程序发送到 logz.io。应用程序和 logstash 都是由 docker-compose 管理的 docker 映像,它负责设置(拉取映像、network_mode、日志驱动程序等)。 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 的代理扩展。有人对这个问题有建议吗?
logstash 的 http 输出插件具有代理属性。您必须使用 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。只需添加输入并发送即可!