3

I have setup fluent with elasticsearch and Kibana with nginx. I followed the instruction and when I go to http:/192.168.10.25:8888 I get the following message

400 Bad Request 'json' or 'msgpack' parameter is required

Below is my 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> 

2 Answers 2

4

Your Fluentd configuration is working.

The message "400 Bad Request 'json' or 'msgpack' parameter is required" appears because in_http sees that your HTTP request (POST or GET) has NO json/msgpack parameter.

Try doing

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

and see if you continue to see the same error.

1

I had the very same problem as you reported, and I tried using Httpie instead of curl. As you can see from the dump it succeeded.

> 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 

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.