I'd like to configure syslog-ng to send logs to redis via a unix socket. This would require implementing the redis protocol as a template or rewrite rule. The only trick is getting the size in bytes of the message being processed. Is there a macro for this or some other way of determining message size?
The protocol would look like this (pretending there existed a macro, MSG_SIZE):
*3 (number of arguments)
$5 (size in bytes of argument 1)
RPUSH (operation)
$4 (size in bytes of argument 2)
logs (key)
$${MSG_SIZE} (size in bytes of argument 3)
$MSG (value)
or as a string:
*3\r\n$5\r\nRPUSH\r\n$4\r\nlogs\r\n$${MSG_SIZE}\r\n$MSG\r\n
and finally as a destination with template:
destination d_redis { unix-stream("/tmp/redis.sock") template("*3\r\n$5\r\nRPUSH\r\n$4\r\nlogs\r\n$${MSG_SIZE}\r\n$MSG\r\n"); };
Does anyone have suggestions of how to accomplish this?
Thanks,
Jake