configuração fluente não funciona

configuração fluente não funciona

Eu configurei fluentemente com elasticsearch e Kibana com nginx. Segui as instruções e quando vou para http://192.168.10.25:8888 recebo a seguinte mensagem

400 Bad Request parâmetro 'json' ou 'msgpack' é obrigatório

Abaixo está meu fluent.conf

## built-in TCP input
## $ echo <json> | fluent-cat <tag>
<source>
  type forward
</source>
## built-in UNIX socket input
#<source>
#  type unix
#</source>

# HTTP input
# http://localhost:8888/<tag>?json=<json>
<source>
  type http
  port 8888
  bind 0.0.0.0
  body_size_limit 32m
  keepalive_timeout 10s
</source>

# collect the dmesg output
<source>
  type syslog
  port 42185
  tag system
</source>


# collect tail with: echo '{"event":"event-123","duration":2700}' >> /var/log/example.log
# Fluentd user need read permission on .log and r/w permission on .pos
<source>
  type tail
  path /var/log/example.log
  pos_file /var/log/example.log.pos # to store last read position
  tag personal.example
  format json
</source>
## File input
## read apache logs with tag=apache.access
#<source>
#  type tail
#  format apache
#  path /var/log/httpd-access.log
#  tag apache.access
#</source>

# Listen HTTP for monitoring
# http://localhost:24220/api/plugins
# http://localhost:24220/api/plugins?type=TYPE
# http://localhost:24220/api/plugins?tag=MYTAG
<source>
  type monitor_agent
  port 24220
</source>

# Listen DRb for debug
<source>
  type debug_agent
  port 24230
</source>


## match tag=apache.access and write to file
#<match apache.access>
#  type file
#  path /var/log/fluent/access
#</match>

# events stored on Elastic Search
<match personal.**>
  type elasticsearch
  logstash_format true
  flush_interval 10s # for testing
  include_tag_key true
  tag_key _key
</match>

## match tag=debug.** and dump to console
<match debug.**>
  type stdout
</match>


# match tag=system.** and forward to another fluent server
<match system.**>
  type forward
  <server>
    host 192.168.0.11
  </server>
  <secondary>
<server>
      host 192.168.0.12
    </server>
  </secondary>
</match>

## match tag=myapp.** and forward and write to file
#<match myapp.**>
#  type copy
#  <store>
#    type forward
#    buffer_type file
#    buffer_path /var/log/fluent/myapp-forward
#    retry_limit 50
#    flush_interval 10s
#    <server>
#      host 192.168.0.13
#    </server>
#  </store>
#  <store>
#    type file
#    path /var/log/fluent/myapp
#  </store>
#</match>

## match fluent's internal events
#<match fluent.**>
#  type null
#</match>

## match not matched logs and write to file
#<match **>
#  type file
#  path /var/log/fluent/else
#  compress gz
#</match>

Responder1

Sua configuração do Fluentd está funcionando.

A mensagem "400 Bad Request 'json' ou 'msgpack' parâmetro é necessário" aparece porque in_http vê que sua solicitação HTTP (POST ou GET) NÃO tem parâmetro json/msgpack.

Tente fazer

curl -X POST -d 'json={"message":"hello"}'

e veja se você continua vendo o mesmo erro.

Responder2

Eu tive o mesmo problema que você relatou e tentei usarhttppieem vez de curl. Como você pode ver no despejo, foi bem-sucedido.

> http --verbose --json POST localhost:8888/tag1.tag2 json={\"foo\":\"bar\"}
POST /ciro.ciro HTTP/1.1
Accept: application/json, */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 29
Content-Type: application/json
Host: localhost:9880
User-Agent: HTTPie/0.9.9

{
    "json": "{\"foo\":\"bar\"}"
}

HTTP/1.1 200 OK
Connection: Keep-Alive
Content-Length: 0
Content-Type: text/plain

informação relacionada