Discussion:
[Dnsmasq-discuss] Log to database
Joachim Zobel
2016-06-12 15:39:12 UTC
Permalink
Hi.

The main problem for my reverse_replace script is speed. It takes a
minute, which is too slow to be run from a web gui. This is because the
script parses the last 15k lines and puts them into an IP->name lookup
tables made up from enviroment variables.

Is there a way to log queries to a database? Something along the lines
of log-facility=/named/pipe and a clever script that turns its stdin
into INSERT statements. This way I could avoid building the lookup table.

Sincerely,
Joachim
Albert ARIBAUD
2016-06-13 07:17:58 UTC
Permalink
Hi Joachim,

Le Sun, 12 Jun 2016 17:39:12 +0200
Post by Joachim Zobel
Hi.
The main problem for my reverse_replace script is speed. It takes a
minute, which is too slow to be run from a web gui. This is because
the script parses the last 15k lines and puts them into an IP->name
lookup tables made up from enviroment variables.
Is there a way to log queries to a database? Something along the
lines of log-facility=/named/pipe and a clever script that turns its
stdin into INSERT statements. This way I could avoid building the
lookup table.
I don"t see any option in dnsmasq for that, but maybe you could
configure your syslog/rsyslog/systemd logger to route dnsmasq logs to
some script (in addition to the standard logging), and that script
would do the database logging.

Problem, of course, is that you'd have to handle database purging, as I
don't think dnsmasq anything when it purges its cache, so your DB would
keep growing if you did not purge it, e.g. based on record date.
Post by Joachim Zobel
Sincerely,
Joachim
Amicalement,
--
Albert.
Eric Hiller
2016-06-13 16:04:43 UTC
Permalink
Albert,

That is a great idea! I used to do just this, worked wonders. Joachim,
see the tutorial:
"This paper describes an approach with rsyslogd, an alternative enhanced
syslog daemon natively supporting MySQL and PostgreSQL. "

http://www.rsyslog.com/doc/v8-stable/tutorials/database.html
Hi Joachim,

Le Sun, 12 Jun 2016 17:39:12 +0200
Post by Joachim Zobel
Hi.
The main problem for my reverse_replace script is speed. It takes a
minute, which is too slow to be run from a web gui. This is because
the script parses the last 15k lines and puts them into an IP->name
lookup tables made up from enviroment variables.
Is there a way to log queries to a database? Something along the
lines of log-facility=/named/pipe and a clever script that turns its
stdin into INSERT statements. This way I could avoid building the
lookup table.
I don"t see any option in dnsmasq for that, but maybe you could
configure your syslog/rsyslog/systemd logger to route dnsmasq logs to
some script (in addition to the standard logging), and that script
would do the database logging.

Problem, of course, is that you'd have to handle database purging, as I
don't think dnsmasq anything when it purges its cache, so your DB would
keep growing if you did not purge it, e.g. based on record date.
Post by Joachim Zobel
Sincerely,
Joachim
Amicalement,
--
Albert.
Eric Hiller
2016-06-13 18:59:17 UTC
Permalink
Depending upon your distro, you may be running rsyslogd anyways. Debian
defaults to it at least, I think red hats do too, but I am not sure on that.

-Eric
Post by Eric Hiller
"This paper describes an approach with rsyslogd, an alternative
enhanced syslog daemon natively supporting MySQL and PostgreSQL. "
http://www.rsyslog.com/doc/v8-stable/tutorials/database.html
Hi.
Unfortunately this does not fit my needs. Since my main target platform
are routers I am looking for a zero dependency solution. An alternative
syslogd is not an option.
I think it should be possible to log to a named pipe and to have a
script that is parsing everything from the pipe into db inserts. If
nobody has done that yet I'll have to try it myself.
Thanks,
Joachim
--
*Eric D Hiller | *www*.hiller.pro <http://hiller.pro/>*
Joachim Zobel
2016-06-13 19:42:25 UTC
Permalink
Oooops, logging to a pipe is not supported. Got the point ...

Sincerely,
Joachim
Sergey Nechaev
2016-06-14 10:17:09 UTC
Permalink
Hello,

Logging to a pipe is dangerous, because if no one reads from pipe write system call will block after internal kernel buffer is full.
If write is not non-blocking and is not wrapped into poll/select/epoll/whatever else (Normally, log calls are blocking), the whole dnsmasq process will stuck.

You can rotate log files more often and process log file after rotation.
--
With best regards,
Sergey Nechaev
Post by Joachim Zobel
Oooops, logging to a pipe is not supported. Got the point ...
Sincerely,
Joachim
_______________________________________________
Dnsmasq-discuss mailing list
http://lists.thekelleys.org.uk/mailman/listinfo/dnsmasq-discuss
Continue reading on narkive:
Loading...