Thanks, this helps.

I'm wanting to check if SEC is behind, but also check if the overall log flow 
(which involves 3 rsyslog servers I can monitor, and a logstash server I can't) 
is keeping up.

As for including the delta in the message, you can do something like:

action=lcall %o -> (sub {perl code here});pipe 'SEC is behind %o minutes. Log 
time: $1' /bin/mailx -s "SEC: %t > SEC is behind 1+ minutes." u...@somewhere.edu

David Lang

On Mon, 4 Jan 2016, Todd M. Hall wrote:

> Date: Mon, 4 Jan 2016 13:25:26 -0600 (CST)
> From: Todd M. Hall <t...@msstate.edu>
> To: David Lang <da...@lang.hm>
> Cc: simple-evcorr-users@lists.sourceforge.net
> Subject: Re: [Simple-evcorr-users] detecting 'old' logs
> 
> We looked into this and did indeed find a solution.  You don't want to check 
> the timestamp of all of the syslogs as it would be too much effort and could 
> impact the performance of SEC.  The solution we came up with is to send a 
> syslog message from the localhost via a cron job.  This puts it in the queue 
> like any other syslog but guarantees that the timestamp would be in sync.  So 
> then all you need is an SEC rule to calculate the unix timestamp of the 
> current time and the syslog message.  The final rule is kinda ugly, but it 
> works.
>
> ############################ Begin Rule ############################
> type=Single
> continue=TakeNext
> ptype=RegExp
> context=$1 -> ( sub { use Time::Local; \
>        my $timestring = $_[0]; \
>        my %months = qw(Jan 0 Feb 1 Mar 2 Apr 3 May 4 Jun 5 Jul 6 Aug 7 Sep 8 
> Oct 9 Nov 10 Dec 11); \
>        my ($csec, $cmin, $chour, $cmday, $cmon, $year) = localtime(time); \
>        $timestring =~ /^([A-Z][a-z]+)\s+(\d+)\s(\d+):(\d+):(\d+)/; \
>        my ($lmon, $lmday, $lhour, $lmin, $lsec) = ($1, $2, $3, $4, $5); \
>        my $month = $months{$lmon}; \
>        my $ltime = timelocal($lsec, $lmin, $lhour, $lmday, $month, $year); \
>        my $ctime = time; \
>        my $diff = $ctime - $ltime; \
>        return 1 if ($ctime - $ltime > 60); \
>        } )
> pattern=^([A-Z][a-z]{2}\s+\d+ \d+:\d+:\d+) \S+.*sec temporal probe
> desc=SEC_behind
> action=pipe 'SEC is behind 1+ minutes. Log time: $1' /bin/mailx -s "SEC: %t 
> SEC is behind 1+ minutes." u...@somewhere.edu
> ############################ End Rule ############################
>
> This rule triggers if the time is over 60 seconds off.  This could be easily 
> adjusted.  The only problem is that the email doesn't show exactly how far 
> off it is.  Hopefully someone else on this list will have a more elegant 
> solution to this problem.
>
>
> On Mon, 4 Jan 2016, David Lang wrote:
>
>> Date: Mon, 4 Jan 2016 12:45:07 -0600
>> From: David Lang <da...@lang.hm>
>> To: simple-evcorr-users@lists.sourceforge.net
>> Subject: [Simple-evcorr-users] detecting 'old' logs
>> 
>> has anyone put together the code that would be needed to detect if sec or 
>> log
>> delivery is falling behind? something along the order of 'if the timestamp 
>> in
>> the logs is > X min behind current, alert'?
>> 
>> David Lang
>>
>> 
>> ------------------------------------------------------------------------------
>> _______________________________________________
>> Simple-evcorr-users mailing list
>> Simple-evcorr-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/simple-evcorr-users
>> 
>
>

------------------------------------------------------------------------------
_______________________________________________
Simple-evcorr-users mailing list
Simple-evcorr-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/simple-evcorr-users

Reply via email to