<p dir="ltr">Hi,</p>
<p dir="ltr">Counters are not zeroed. They get pruned iff they are not updated for stats-lifetime() seconds. And only the dynamic kind.</p>
<p dir="ltr">This means that you have to query them within the lifetime period to avoid losing their value.</p>
<p dir="ltr">Also, I&#39;m thinking about sending stats as a well structured message with name value pairs, so you don&#39;t need to write custom scripts to query/store counters, you can use syslog-ng machinery for that.</p>

<div class="gmail_quote">On Nov 17, 2013 7:49 PM, &quot;Fekete Róbert&quot; &lt;<a href="mailto:frobert@balabit.hu">frobert@balabit.hu</a>&gt; wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi,<br>
<br>
I am not sure I understand correctly how this feature will work. For example, I set the stats-lifetime() option to 60 seconds, and start syslog-ng. At that moment, all counters are 0.<br>
After some time, say, 70 seconds after start, I use the syslog-ng-ctl stats command. What will be the output?<br>
The number of messages received since the last time the counters were zeroed (that is, in the last 10 seconds)? Or the number of messages received in the last full cycle (0-60 seconds)? If the former, does the stats message indicate that the number apply to the last 10 seconds?<br>

<br>
Also, if I want to aggregate the statistics, do I have to use the stats-freq() option, then filter and parse the stats message (so I get the numbers for the last 60 minutes), or is it possible to get this info reliably using the syslog-ng-ctl-stats command somehow?<br>

<br>
Regards,<br>
<br>
Robert<br>
<br>
On Saturday, November 16, 2013 14:50 CET, Balazs Scheidler &lt;<a href="mailto:bazsi@balabit.hu">bazsi@balabit.hu</a>&gt; wrote:<br>
<br>
&gt; Hi,<br>
&gt;<br>
&gt; I&#39;m about to integrate a stats-counter related change and prior to doing<br>
&gt; that I&#39;d like to solicit feedback.<br>
&gt;<br>
&gt; There are both user-visible changes and developer visible changes,<br>
&gt; feedback on both is sought.<br>
&gt;<br>
&gt; Code related comments are preferred on github, functionality comments<br>
&gt; are best sent via email in response to this one.<br>
&gt;<br>
&gt; Here&#39;s the branch:<br>
&gt;<br>
&gt; <a href="https://github.com/balabit/syslog-ng/tree/3.6queue/f/stats-reset" target="_blank">https://github.com/balabit/syslog-ng/tree/3.6queue/f/stats-reset</a><br>
&gt;<br>
&gt; Thanks in advance.<br>
&gt;<br>
&gt; User-visible changes:<br>
&gt; =====================<br>
&gt;<br>
&gt; syslog-ng is keeping track on a number of statistics counters that can<br>
&gt; be used to track what is happening.<br>
&gt;<br>
&gt; The detail level of these counters is controlled by the stats-level()<br>
&gt; global option, which defaults to zero.<br>
&gt;<br>
&gt; syslog-ng reports these counters periodically every stats-freq()<br>
&gt; seconds, or preferably on-demand by invoking &quot;syslog-ng-ctl stats&quot; on<br>
&gt; the command line.<br>
&gt;<br>
&gt; At stats-level(3) a number of &quot;dynamic&quot; counters are enabled, which<br>
&gt; track the number of messages on a per $HOST, per $PROGRAM and per<br>
&gt; $HOST_FROM basis. This means that you can follow how many messages a<br>
&gt; given $PROGRAM is generating in a period.<br>
&gt;<br>
&gt; The issue with dynamic counters is that they can consume a lot of memory<br>
&gt; if  the rate of new $PRORGRAM/$HOST values is high.<br>
&gt;<br>
&gt; Previously the cleanup happened in a limited way at configuration reload<br>
&gt; (e.g. SIGHUP) time, which is not really useful for controlling memory<br>
&gt; usage by this feature.<br>
&gt;<br>
&gt; The current patch series introduces a stats-lifetime() option and<br>
&gt; syslog-ng starts inspecting counters every once in a while and prune<br>
&gt; those that are updated earlier than stats-lifetime().<br>
&gt;<br>
&gt; Not-so visible changes<br>
&gt; ======================<br>
&gt;<br>
&gt; I have fixed a few bugs and renamed a function to make it easier to<br>
&gt; understand. Details are in the git history.<br>
&gt;<br>
&gt;<br>
&gt; Balazs Scheidler (7):<br>
&gt;   logsource: use stats_instant_inc_dynamic_counter() for HOST counters<br>
&gt;   logsource: track time for PROGRAM counters<br>
&gt;   mainloop: remove old orphanage based stats cleanup<br>
&gt;   stats: add stats_prune_old_counters()<br>
&gt;   stats-timer: implement stats_lifetime option<br>
&gt;   cfg: add stats-lifetime() global option<br>
&gt;   stats: rename stats_instance_inc_dynamic_counter() to<br>
&gt;     stats_register_and_increment_dynamic_counter()<br>
&gt;<br>
&gt;  lib/cfg-grammar.y | 16 ++++++++-------<br>
&gt;  lib/cfg-parser.c  |  1 +<br>
&gt;  lib/cfg.c         |  3 ++-<br>
&gt;  lib/cfg.h         |  1 +<br>
&gt;  lib/logsource.c   | 15 +++-----------<br>
&gt;  lib/mainloop.c    |  1 -<br>
&gt;  lib/stats-timer.c | 61 +++++++++++++++++++++++++++++++++++++++----------------<br>
&gt;  lib/stats-timer.h |  2 +-<br>
&gt;  lib/stats.c       | 52 +++++++++++++++++++++++++++++++++++++++--------<br>
&gt;  lib/stats.h       |  7 +++----<br>
&gt;  10 files changed, 108 insertions(+), 51 deletions(-)<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Bazsi<br>
&gt;<br>
<br>
<br>
<br>
<br>
<br>
<br>
______________________________________________________________________________<br>
Member info: <a href="https://lists.balabit.hu/mailman/listinfo/syslog-ng" target="_blank">https://lists.balabit.hu/mailman/listinfo/syslog-ng</a><br>
Documentation: <a href="http://www.balabit.com/support/documentation/?product=syslog-ng" target="_blank">http://www.balabit.com/support/documentation/?product=syslog-ng</a><br>
FAQ: <a href="http://www.balabit.com/wiki/syslog-ng-faq" target="_blank">http://www.balabit.com/wiki/syslog-ng-faq</a><br>
<br>
</blockquote></div>