Log-Saftpresse
view release on metacpan or search on metacpan
lib/Log/Saftpresse/CountersOutput/Html.pm view on Meta::CPAN
my $smtpdConnCnt = 0;
# PostfixRejects
my $msgsRjctd = $reject_cnt->get_value_or_zero('total', 'reject');
my $msgsDscrdd = $reject_cnt->get_value_or_zero('total', 'discard');
my $msgsWrnd = $reject_cnt->get_value_or_zero('total', 'warning');
my $msgsHld = $reject_cnt->get_value_or_zero('total', 'hold');
# PostfixRecieved
my $msgsRcvd = $recieved_cnt->get_value_or_zero('total');
my $msgsDlvrd = $delivered_cnt->get_value_or_zero('sent', 'total');
my $msgsDfrd = $delivered_cnt->get_value_or_zero('deferred', 'total');
my $msgsFwdd = $delivered_cnt->get_value_or_zero('forwarded');
my $msgsBncd = $delivered_cnt->get_value_or_zero('bounced', 'total');
my $sizeRcvd = $delivered_cnt->get_value_or_zero('recieved', 'size', 'total');
my $sizeDlvrd = $delivered_cnt->get_value_or_zero('sent', 'size', 'total');
my $sendgUserCnt = $delivered_cnt->get_key_count('recieved', 'by_sender');
my $sendgDomCnt = $delivered_cnt->get_key_count('recieved', 'by_domain');
my $recipUserCnt =$delivered_cnt->get_key_count('sent', 'by_rcpt');
my $recipDomCnt = $delivered_cnt->get_key_count('sent', 'by_domain');
my $msgsTotal = $msgsDlvrd + $msgsRjctd + $msgsDscrdd;
print $self->headline(1, 'Grand Totals');
print $self->key_value_table( "Messages", [
[ 'Received', $msgsRcvd ],
[ 'Delivered', $msgsDlvrd ],
[ 'Forwarded', $msgsFwdd ],
[ 'Deferred', $msgsDfrd ],
] );
print $self->key_value_table( "Rejects", [
[ 'Bounced', $msgsBncd ],
[ 'Rejected', $msgsRjctd, 'count', $msgsTotal ],
[ 'Rejected Warnings', $msgsWrnd ],
[ 'Held', $msgsHld ],
[ 'discarded', $msgsDscrdd, 'count', $msgsTotal ],
] );
print $self->key_value_table( "Traffic Volume", [
[ 'Bytes recieved', $sizeRcvd, 'byte' ],
[ 'Bytes delivered', $sizeDlvrd, 'byte' ],
[ 'Senders', $sendgUserCnt ],
[ 'Sending hosts/domains', $sendgDomCnt ],
[ 'Recipients', $recipUserCnt ],
[ 'Recipients hosts/domains', $recipDomCnt ],
] );
return;
}
sub print_smtpd_stats {
my ( $self, $cnt ) = @_;
my $connections = $cnt->get_value_or_zero('total');
my $hosts_domains = int(keys %{$cnt->get_node('per_domain')});
my $avg_conn_time = $connections > 0 ?
($cnt->get_value_or_zero('busy', 'total')
/ $connections ) + .5 : 0;
my $total_conn_time = $cnt->get_value_or_zero('busy', 'total');
print $self->headline(1, 'Smtpd Statistics');
print $self->key_value_table( "Connections", [
[ 'Connections', $connections ],
[ 'Hosts/domains', $hosts_domains ],
[ 'Avg. connect time', $avg_conn_time ],
[ 'total connect time', $total_conn_time, 'interval' ],
] );
return;
}
sub print_smtpd_summaries {
my ( $self, $cnt ) = @_;
my $smtpd_stats = $cnt->{'PostfixSmtpdStats'};
my $params = {
'day' => [ 'Per-Day', 'per_day', 'string' ],
'hour' => [ 'Per-Hour', 'per_hr', 'decimal' ],
'domain' => [ 'Per-Domain', 'per_domain', [ 'connections', 'decimal', 20 ] ],
};
foreach my $table ( 'day', 'hour', 'domain' ) {
my ( $title, $key, $sort ) = @{$params->{ $table }};
print $self->headline(1, "$title SMTPD Connection Summary");
print $self->statistics_from_hashes(
legend => $table,
sort => $sort,
rows => [
[ 'connections', $smtpd_stats->get_node($key) ],
[ 'time conn.', $smtpd_stats->get_node('busy', $key) ],
[ 'avg./conn.', $self->hash_calc_avg( 2,
$smtpd_stats->get_node('busy', $key),
$smtpd_stats->get_node($key),
), ],
[ 'max. time', $smtpd_stats->get_node('busy', 'max_'.$key ), ],
],
);
}
return;
}
sub print_domain_summaries {
my ( $self, $cnt ) = @_;
my $top_cnt = $self->{'top_domains_cnt'};
$top_cnt = defined $top_cnt && $top_cnt >= 0 ?
$self->{'top_domains_cnt'} : 20;
my $delivered = $cnt->{'PostfixDelivered'};
foreach my $table ( 'sent', 'recieved' ) {
print $self->headline(1, "Host/Domain Summary: Message Delivery (top $top_cnt $table)");
print $self->statistics_from_hashes(
legend => 'host/domain',
sort => [ 'sent cnt', 'decimal', $top_cnt ],
rows => [
[ 'sent cnt', $delivered->get_node($table, 'by_domain') ],
[ 'bytes', $delivered->get_node($table, 'size', 'by_domain') ],
$table eq 'sent' ? (
# TODO
#[ 'defers', $delivered->get_node('busy', 'per_day') ],
[ 'avg delay', $self->hash_calc_avg( 2,
$delivered->get_node($table, 'delay', 'by_domain'),
$delivered->get_node($table, 'by_domain'),
), ],
[ 'max. delay', $delivered->get_node($table, 'max_delay', 'by_domain'), ],
) : (),
],
);
}
return;
}
sub print_geo_stats {
my ( $self, $cnt ) = @_;
my $client = $cnt->get_node('client');
if( defined $client ) {
print $self->hash_top_values(
$client,
title => 'Client Countries',
count => 0,
legend => 'Country',
);
}
return;
}
sub print_tls_stats {
my ( $self, $cnt ) = @_;
my $tls_cnt = $cnt->{'TlsStatistics'};
my $smtpd_cnt = $cnt->{'PostfixSmtpdStats'};
my $recieved_cnt = $cnt->{'PostfixRecieved'};
my $delivered_cnt = $cnt->{'PostfixDelivered'};
my $smtpdConnCnt;
if( defined $smtpd_cnt ) {
$smtpdConnCnt = $smtpd_cnt->get_value_or_zero('total');
}
my $msgs_rcvd = $recieved_cnt->get_value_or_zero('total');
my $msgs_sent = $delivered_cnt->get_value_or_zero('sent', 'total');
print $self->headline(1, "TLS Statistics");
print $self->key_value_table( "Total", [
[ 'Incoming TLS connections',
$tls_cnt->get('smtpd', 'connections', 'total'),
'count', $smtpdConnCnt ],
[ 'Incoming TLS messages',
$tls_cnt->get('smtpd', 'messages', 'total'),
'count', $msgs_rcvd ],
[ 'Outgoing TLS connections',
$tls_cnt->get('smtp', 'connections', 'total'),
'count', $smtpdConnCnt ],
[ 'Outgoing TLS messages',
$tls_cnt->get('smtp', 'messages', 'total'),
'count', $msgs_sent ],
] );
my @tls_statistics = (
[ "Incoming TLS trust-level" => 'trust-level',
$smtpdConnCnt, 'smtpd', 'connections', 'level' ],
( run in 1.839 second using v1.01-cache-2.11-cpan-c221a9de4ec )