Docker Swarm / FluentD - Removing a Key

Docker Swarm / FluentD - Removing a Key

If you are setting up FluentD within a Docker Swarm, with the docker metadata filter plugin you may come across this error when there’s a swarm label with an empty value. In my case, the problem was with this key: docker.labels.com.docker.swarm.task.

Error Message

{
	"type": "illegal_argument_exception",
	"reason": "Can't merge a non object mapping [docker.labels.com.docker.swarm.task] with an object mapping [docker.labels.com.docker.swarm.task]"
}

Example of an event that has this empty label, triggering the error

{
	"message": "2018-06-23T18:18:05+0000 INFO takes the value and converts it to string.\n",
	"type": "http-bulk",
	"fluentd_tags": "final",
	"docker": {
		"id": "611e37729095550c20c8d464ccf6a5fcbdae3db7859441d5b45fdfbe26b74168",
		"name": "testing_random-logger.1.cwx24otbnqhgmszjyhonsp8wo",
		"container_hostname": "611e37729095",
		"image": "chentex/random-logger:latest@sha256:f287d3ff193fc99211943ddfcf4fcfcff6acbe2ac7dd8385acb07bcaaec6a41f",
		"image_id": "sha256:759976efd70726fd508dfe7795ebd55cea9b96585f615c558e4ccc28e5d33f12",
		"labels": {
			"com.docker.stack.namespace": "testing",
			"com.docker.swarm.node.id": "gz4fb30qwy2lhq4htazaeyypw",
			"com.docker.swarm.service.id": "qa72pgmzc26akxclz99j170d3",
			"com.docker.swarm.service.name": "testing_random-logger",
			"com.docker.swarm.task": "",
			"com.docker.swarm.task.id": "cwx24otbnqhgmszjyhonsp8wo",
			"com.docker.swarm.task.name": "testing_random-logger.1.cwx24otbnqhgmszjyhonsp8wo"
		}
	},
	"@timestamp": "2018-06-23T18:18:05.275+00:00",
	"stream": "stdout"
}

Config block that removes the JSON key that has an empty value and corrects the error

<filter docker.**>
  @type record_transformer
  remove_keys $['docker']['labels']['com.docker.swarm.task']
</filter>

Victory.

References