Я использую Logstash с вводом файлов & Http-вывод для доморощенного сервиса, для которого требуются учетные данные (username:password
), которые должны быть отправлены как Base64 encoded
значение. Ниже приведена моя конфигурация Logstash. В настоящее время я могу отправить значение Base 64 encoded
через headers
, однако я ищу способ кодирования String (который будет доступен для Logstash через переменную среды) до значения String Base 64 encoded
. Был бы очень признателен, если кто-нибудь может пролить свет на это.Конфигурация Logstash: http-выход с кодированными заголовками Base 64
input {
file {
path => "/home/tom/testData/test2.log"
type => "log"
}
}
filter {
if [type] == "log" {
grok {
match => ["message", "%{TIMESTAMP_ISO8601:time} %{LOG:level} %{GREEDYDATA:lmessage}"]
}
ruby {
code => "require 'base64';
event['pass'] = Base64.encode64('User:Pwd')"
}
}
}
output {
stdout { codec => rubydebug }
http {
http_method => "post"
url => "http://10.1.2.3:1123/HomeService?User=Tom"
format => "message"
headers => {"Authorization" => "Basic %{pass}"}
content_type => "application/json"
message => '{"Outer": { "Inner": [ {"doc": { "Timestamp": "%{time}", "Single": "%{level}","Double": "%{lmessage}" } } ] } }'
}
}
Могу ли я использовать фильтр Ruby, в сочетании с фильтром ГРОК у меня есть на данный момент? Я мог бы вставить переменную окружения даже из выходного фильтра. –
Да. В logstash, если вы не остановите его, события пройдут по цепочке фильтров. – Alcanzar
Непонятно, где будет происходить преобразование из String -> Base64, закодированного в String. –