Estou escrevendo um script para ser usado como handler em uma configuração do watcher no consul.
A documentação para manipuladores de script
tipo afirma:
Um manipulador executável lê as informações de invocação JSON de stdin. [...] Qualquer coisa escrita em stdout é registrada.
Com base nisso, configurei um manipulador de script para observar o evento ak/v:
"watches": [
{
"type": "key",
"key": "some_key",
"handler_type": "script",
"handler": "/opt/consul/script/key_handler.sh"
}
]
E criou o script de acordo
#!/bin/bash
read event_payload
echo "The value of the key is $(echo $event_payload | jq -r .Value | base64 -d)"
Alterei o valor de some_key
na loja consul k/v e esperava ver a saída stdout em algum lugar nos logs. O Consul está configurado para logar em um arquivo e no syslog com um nível de informação. Aqui está a parte relevante do arquivo de configuração:
{
"log_level": "INFO",
"enable_syslog": true,
"log_file": "/var/log/consul/",
"log_rotate_duration": "24h",
"log_rotate_max_files": 7
}
Eu olhei no journalct -u consul -f
arquivo de log atual do syslog (ie ) e do consul (ie tail -f $(ls -trd /var/log/consul/* | tail -1)
. Ambos os recursos de log estão ok e mostrando a atividade atual do consul. Mas não consigo encontrar nenhum rastro da saída do meu script.
Se eu modificar o script e redirecionar a saída para um arquivo arbitrário, posso encontrar a saída que estou esperando para que o script definitivamente faça seu trabalho.
Eu perdi alguma coisa na configuração que está impedindo que esses logs apareçam?