Sugiro que você colete algumas informações de depuração: Como você disse, seu trabalho na rede
- Pacotes TCP Dump no host do Graylog:
se o Nginx estiver no mesmo host que o Graylog: sudo tcpdump udp -n -vv port 12301 -i lo -X
se o Nginx estiver em um host diferente como Graylog: sudo tcpdump udp -n -vv port 12301 -X
Se o nível da rede funcionar e você puder ver pacotes como na imagem, vá para Graylog Inputs e verifique que tipo de entrada você tem
[a] Precisa ser UDP de texto simples / simples (se você tiver GELF UDP o Graylog filtrará suas mensagens como o Nginx enviará logs no formato Syslog e não em Json
[b] Você terá Network IO diferente de 0
[c] Porta (12301 no seu caso) e IP precisam ser os mesmos da configuração Nginx
<190>Jul.26.16:12:07.graylog.nginx:.{."timestamp":."2018-07-26T16:12:07+03:00",."remote_addr":."xx.x.x.xxx",."body_bytes_sent":.4277,."request_time":.0.005,."response_status":.200,."request":."POST./api/cluster/metrics/multiple.HTTP/1.1",."request_method":."POST",."host":."xx.x.x.xxx",."upstream_cache_status":."-",."upstream_addr":."xx.x.x.xxx",."http_x_forwarded_for":."xx.x.x.xxx",."http_referrer":."https://xx.x.x.xxx/system/inputs",."http_user_agent":."xx.x.x.xxxxx.x.x.xxxxx.x.x.xxxxx.x.x.xxx",."http_version":."HTTP/1.1",."nginx_access":.true.}
- Extrair mensagem pseudo-Syslog RAW do formulário um JSON usando Extrator de entrada do Graylog:
Exemplo de extrator:
{
"extractors": [
{
"title": "Extract from Pseudo-Syslog a JSON",
"extractor_type": "regex_replace",
"converters": [],
"order": 0,
"cursor_strategy": "cut",
"source_field": "message",
"target_field": "message",
"extractor_config": {
"replacement": "$1",
"regex": "^.*?(\{.*?\})$"
},
"condition_type": "none",
"condition_value": ""
}
],
"version": "2.4.6"
}
À medida que você usa o "pacote de conteúdo", é necessário adicionar a regra antes de todas as outras que acessarem "pacote de conteúdo" (ordem: 0) se você importar exportação
Depois de adicionar a regra, você terá um log JSON claro do Nginx, todos os outros trabalhos farão "pacote de conteúdo"
- Verifique sua configuração do Nginx
Exemplo do ngnix.conf:
log_format graylog_json '{ "timestamp": "$time_iso8601", "remote_addr": "$remote_addr", "body_bytes_sent": $body_bytes_sent, "request_time": $request_time, "response_status": $status, "request": "$request", "request_method ": "$request_method", "host": "$host", "upstream_cache_status": "$upstream_cache_status", "upstream_addr": "$upstream_addr", "http_x_forwarded_for": "$http_x_forwarded_for", "http_referrer": "$http_referer", "http_user_agent": "$h ttp_user_agent", "http_version": "$server_protocol", "nginx_access": true }';
access_log syslog:server=graylog:5555 graylog_json;
Espero que, seguindo todos esses passos, você ache útil