Send Netdot-devel mailing list submissions to
[email protected]
To subscribe or unsubscribe via the World Wide Web, visit
https://osl.uoregon.edu/mailman/listinfo/netdot-devel
or, via email, send a message with subject or body 'help' to
[email protected]
You can reach the person managing the list at
[email protected]
When replying, please edit your Subject line so it is more specific
than "Re: Contents of Netdot-devel digest..."
Today's Topics:
1. [SCM] Netdot branch netdot-1.0 updated.
netdot-1.0.4-32-g093464b ([email protected])
2. [SCM] Netdot branch netdot-1.0 updated.
netdot-1.0.4-33-g2cb0366 ([email protected])
----------------------------------------------------------------------
Message: 1
Date: Sat, 9 Feb 2013 07:43:03 -0800
From: [email protected]
Subject: [Netdot-devel] [SCM] Netdot branch netdot-1.0 updated.
netdot-1.0.4-32-g093464b
To: [email protected]
Message-ID: <[email protected]>
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Netdot".
The branch, netdot-1.0 has been updated
via 093464b335ecff59821d777e875ff83b29d8fe03 (commit)
from c6a46545611288ad58eba299faa3417efa04fc82 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 093464b335ecff59821d777e875ff83b29d8fe03
Author: Carlos Vicente <[email protected]>
Date: Sat Feb 9 15:43:39 2013 +0000
More granular configuration control of Nagios grouping
diff --git a/etc/Default.conf b/etc/Default.conf
index 0dc286d..5078a85 100644
--- a/etc/Default.conf
+++ b/etc/Default.conf
@@ -832,13 +832,12 @@ NAGIOS_TRAPS => 1,
# (DEFAULT_DNSDOMAIN)
NAGIOS_STRIP_DOMAIN => 1,
-# What to use for grouping hosts. Options:
-# entity: The name of the "used_by" entity of the device, or the
-# entity associated with the subnet where its main
-# IP resides.
-# site: The name of the site where the device is located
-NAGIOS_GROUP_BY => 'entity',
-
+# Choose which fields are used for hostgroup_name and alias values
+# Valid options: 'site_name', 'site_number' (Site ID), or 'site_alias',
+# 'subnet_entity_name', 'subnet_entity_alias',
+# 'usedby_entity_name', 'usedby_entity_alias'
+NAGIOS_HOSTGROUP_NAME_FIELD => 'subnet_entity_name',
+NAGIOS_HOSTGROUP_ALIAS_FIELD => 'subnet_entity_alias',
#####################################################################
# - SYSMON - www.sysmon.org
diff --git a/lib/Netdot/Exporter.pm b/lib/Netdot/Exporter.pm
index 3468655..5ccaf52 100644
--- a/lib/Netdot/Exporter.pm
+++ b/lib/Netdot/Exporter.pm
@@ -84,7 +84,8 @@ sub get_device_info {
$logger->debug("Netdot::Exporter::get_device_info: querying database");
my $rows = $self->{_dbh}->selectall_arrayref("
SELECT d.id, d.snmp_managed, d.community,
- d.down_from, d.down_until, entity.name, site.name,
contactlist.id,
+ d.down_from, d.down_until, entity.name,
entity.aliases,
+ site.name, site.number, site.aliases, contactlist.id,
target.id, target.address, target.version,
target.parent, rr.name, zone.name,
i.id, i.number, i.name, i.admin_status, i.monitored,
i.contactlist,
bgppeering.bgppeeraddr, bgppeering.monitored
@@ -104,7 +105,8 @@ sub get_device_info {
$logger->debug("Netdot::Exporter::get_device_info: building data
structure");
foreach my $row ( @$rows ){
my ($devid, $devsnmp, $community,
- $down_from, $down_until, $entity, $site, $clid,
+ $down_from, $down_until, $entity_name, $entity_alias,
+ $site_name, $site_number, $site_alias, $clid,
$target_id, $target_addr, $target_version, $subnet, $name, $zone,
$intid, $intnumber, $intname, $intadmin, $intmon, $intcl,
$peeraddr, $peermon) = @$row;
@@ -118,8 +120,11 @@ sub get_device_info {
$device_info{$devid}{snmp_managed} = $community;
$device_info{$devid}{down_from} = $down_from;
$device_info{$devid}{down_until} = $down_until;
- $device_info{$devid}{used_by} = $entity if defined $entity;
- $device_info{$devid}{site} = $site if defined $site;
+ $device_info{$devid}{usedby_entity_name} = $entity_name if defined
$entity_name;
+ $device_info{$devid}{usedby_entity_alias} = $entity_alias if defined
$entity_alias;
+ $device_info{$devid}{site_name} = $site_name if defined $site_name;
+ $device_info{$devid}{site_number} = $site_number if defined
$site_number;
+ $device_info{$devid}{site_alias} = $site_alias if defined $site_alias;
$device_info{$devid}{contactlist}{$clid} = 1 if defined $clid;
$device_info{$devid}{peering}{$peeraddr}{monitored} = $peermon if
defined $peeraddr;
$device_info{$devid}{interface}{$intid}{number} = $intnumber;
diff --git a/lib/Netdot/Exporter/Nagios.pm b/lib/Netdot/Exporter/Nagios.pm
index 2362dd1..619f6bd 100644
--- a/lib/Netdot/Exporter/Nagios.pm
+++ b/lib/Netdot/Exporter/Nagios.pm
@@ -42,7 +42,8 @@ sub new{
foreach my $key ( qw /NMS_DEVICE NAGIOS_CHECKS NAGIOS_TIMEPERIODS
NAGIOS_DIR
NAGIOS_FILE NAGIOS_NOTIF_FIRST NAGIOS_NOTIF_LAST
NAGIOS_NOTIF_INTERVAL NAGIOS_TRAPS
NAGIOS_STRIP_DOMAIN
- NAGIOS_GROUP_BY NAGIOS_TEMPLATES/ ){
+ NAGIOS_TEMPLATES NAGIOS_HOSTGROUP_NAME_FIELD
+ NAGIOS_HOSTGROUP_ALIAS_FIELD/ ){
$self->{$key} = Netdot->config->get($key);
}
@@ -88,15 +89,16 @@ sub generate_configs {
# Get Subnet info
my %subnet_info;
my $subnetq = $self->{_dbh}->selectall_arrayref("
- SELECT ipblock.id, ipblock.description, entity.name
+ SELECT ipblock.id, ipblock.description, entity.name,
entity.aliases
FROM ipblockstatus, ipblock
LEFT JOIN entity ON (ipblock.used_by=entity.id)
WHERE ipblock.status=ipblockstatus.id
AND (ipblockstatus.name='Subnet' OR
ipblockstatus.name='Container')
");
foreach my $row ( @$subnetq ){
- my ($id, $descr, $entity) = @$row;
- $subnet_info{$id}{entity} = $entity if defined $entity;
+ my ($id, $descr, $entity_name, $entity_alias) = @$row;
+ $subnet_info{$id}{entity_name} = $entity_name if defined $entity_name;
+ $subnet_info{$id}{entity_alias} = $entity_alias if defined
$entity_alias;
$subnet_info{$id}{description} = $descr;
}
@@ -203,34 +205,45 @@ sub generate_configs {
next;
}
- # Determine the group name
- my $group;
- if ( $self->{NAGIOS_GROUP_BY} eq 'entity' ){
+ # Determine the hostgroup name and alias
+ my $group_name;
+ my $group_alias;
+
+ my $name_field = $self->{NAGIOS_HOSTGROUP_NAME_FIELD};
+ my $alias_field = $self->{NAGIOS_HOSTGROUP_ALIAS_FIELD};
+
+ if ( $name_field =~ /^subnet_/o ){
+ my $nf = $name_field;
+ $nf =~ s/^subnet_//;
if ( my $subnet = $device_info->{$devid}->{subnet} ){
- $group = $subnet_info{$subnet}->{entity} ||
- $subnet_info{$subnet}->{description};
+ $group_name = $subnet_info{$subnet}->{$nf};
}
- unless ( $group ){
- if ( my $entity = $device_info->{$devid}->{used_by} ){
- $group = $entity;
- }
- }
- }if ( $self->{NAGIOS_GROUP_BY} eq 'site' ){
- if ( my $site = $device_info->{$devid}->{site} ){
- $group = $site;
+ }else {
+ $group_name = $device_info->{$devid}->{$name_field};
+ }
+ if ( $alias_field =~ /^subnet_/o ){
+ my $af = $alias_field;
+ $af =~ s/^subnet_//;
+ if ( my $subnet = $device_info->{$devid}->{subnet} ){
+ $group_alias = $subnet_info{$subnet}->{$af};
}
+ }else {
+ $group_alias = $device_info->{$devid}->{$alias_field};
}
-
- unless ( $group ){
+ unless ( $group_name ){
$logger->warn("Device $hostname in unknown group");
- $group = "Unknown";
+ $group_name = "Unknown";
+ $group_alias = "Unknown";
}
+
# Remove illegal chars
- $group =~ s/[\(\),]//g;
- $group =~ s/^\s*(.)\s*$/$1/;
- $group =~ s/[\/\s]/_/g;
- $group =~ s/&/and/g;
- $hostargs{group} = $group;
+ $group_name =~ s/[\(\),]//g;
+ $group_name =~ s/^\s*(.)\s*$/$1/;
+ $group_name =~ s/[\/\s]/_/g;
+ $group_name =~ s/&/and/g;
+
+ $groups{$group_name}{alias} = $group_alias;
+ $hostargs{group} = $group_name;
# Contact Lists
my @clids;
@@ -257,7 +270,7 @@ sub generate_configs {
$hostargs{parents} = join ',', @parent_names;
}
- push @{ $groups{$group}{members} }, $hostargs{name};
+ push @{ $groups{$group_name}{members} }, $hostargs{name};
$self->print_host(%hostargs);
# Add monitored services on the target IP
@@ -712,10 +725,11 @@ sub print_hostgroups{
my $out = $self->{out};
foreach my $group ( keys %$groups ){
+ my $alias = $groups->{$group}->{alias} || $group;
my $hostlist = join ',', @{ $groups->{$group}->{members} };
print $out "define hostgroup{\n";
print $out "\thostgroup_name $group\n";
- print $out "\talias $group\n";
+ print $out "\talias $alias\n";
print $out "\tmembers $hostlist\n";
print $out "}\n\n";
}
-----------------------------------------------------------------------
Summary of changes:
etc/Default.conf | 13 +++----
lib/Netdot/Exporter.pm | 13 +++++--
lib/Netdot/Exporter/Nagios.pm | 68 ++++++++++++++++++++++++----------------
3 files changed, 56 insertions(+), 38 deletions(-)
hooks/post-receive
--
Netdot
------------------------------
Message: 2
Date: Sat, 9 Feb 2013 10:34:48 -0800
From: [email protected]
Subject: [Netdot-devel] [SCM] Netdot branch netdot-1.0 updated.
netdot-1.0.4-33-g2cb0366
To: [email protected]
Message-ID: <[email protected]>
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Netdot".
The branch, netdot-1.0 has been updated
via 2cb03664aec31d3347f152eef3c5bff379d88e5d (commit)
from 093464b335ecff59821d777e875ff83b29d8fe03 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 2cb03664aec31d3347f152eef3c5bff379d88e5d
Author: Carlos Vicente <[email protected]>
Date: Sat Feb 9 18:35:23 2013 +0000
More descriptive Nagios alerts for ifstatus, correction to previous changes
(Karl Putland)
diff --git a/lib/Netdot/Exporter.pm b/lib/Netdot/Exporter.pm
index 5ccaf52..3b13652 100644
--- a/lib/Netdot/Exporter.pm
+++ b/lib/Netdot/Exporter.pm
@@ -87,7 +87,7 @@ sub get_device_info {
d.down_from, d.down_until, entity.name,
entity.aliases,
site.name, site.number, site.aliases, contactlist.id,
target.id, target.address, target.version,
target.parent, rr.name, zone.name,
- i.id, i.number, i.name, i.admin_status, i.monitored,
i.contactlist,
+ i.id, i.number, i.name, i.description,
i.admin_status, i.monitored, i.contactlist,
bgppeering.bgppeeraddr, bgppeering.monitored
FROM rr, zone, interface i, device d
LEFT JOIN ipblock target ON d.snmp_target=target.id
@@ -108,7 +108,7 @@ sub get_device_info {
$down_from, $down_until, $entity_name, $entity_alias,
$site_name, $site_number, $site_alias, $clid,
$target_id, $target_addr, $target_version, $subnet, $name, $zone,
- $intid, $intnumber, $intname, $intadmin, $intmon, $intcl,
+ $intid, $intnumber, $intname, $intdesc, $intadmin, $intmon, $intcl,
$peeraddr, $peermon) = @$row;
my $hostname = ($name eq '@')? $zone : $name.'.'.$zone;
$device_info{$devid}{ipid} = $target_id;
@@ -129,6 +129,7 @@ sub get_device_info {
$device_info{$devid}{peering}{$peeraddr}{monitored} = $peermon if
defined $peeraddr;
$device_info{$devid}{interface}{$intid}{number} = $intnumber;
$device_info{$devid}{interface}{$intid}{name} = $intname;
+ $device_info{$devid}{interface}{$intid}{description} = $intdesc;
$device_info{$devid}{interface}{$intid}{admin} = $intadmin;
$device_info{$devid}{interface}{$intid}{monitored} = $intmon;
$device_info{$devid}{interface}{$intid}{contactlist} = $intcl;
diff --git a/lib/Netdot/Exporter/Nagios.pm b/lib/Netdot/Exporter/Nagios.pm
index 619f6bd..a7f50ed 100644
--- a/lib/Netdot/Exporter/Nagios.pm
+++ b/lib/Netdot/Exporter/Nagios.pm
@@ -331,9 +331,10 @@ sub generate_configs {
$logger->warn("$hostname: interface $ifid: IFSTATUS
check requires ifindex");
return;
}
- $args{ifindex} = $iface->{number};
- $args{name} = $iface->{name} if $iface->{name};
- $args{community} = $device_info->{$devid}->{community};
+ $args{ifindex} = $iface->{number};
+ $args{name} = $iface->{name} if $iface->{name};
+ $args{description} = $iface->{description} if
$iface->{description};
+ $args{community} = $device_info->{$devid}->{community};
# If interface has a contactlist, use that, otherwise use
Device contactlists
my @cls;
@@ -518,6 +519,7 @@ sub print_host {
sub print_service {
my ($self, %argv) = @_;
my ($hostname, $srvname) = @argv{'hostname', 'srvname'};
+ my $displayname;
my $checkcmd;
unless ( $checkcmd = $self->{NAGIOS_CHECKS}{$srvname} ){
@@ -544,8 +546,9 @@ sub print_service {
if ( $srvname eq "IFSTATUS" ){
my $ifindex = $argv{ifindex};
$srvname .= "_$ifindex"; # Make the service name unique
- $srvname .= '_('.$argv{name}.')' if defined $argv{name};
$checkcmd .= "!$ifindex"; # Pass the argument to the check command
+ $displayname = $argv{name} || $srvname;
+ $displayname .= " (" . $argv{description} . ")" if $argv{description};
}
if ( $srvname eq "BGPPEER" ){
@@ -581,12 +584,14 @@ sub print_service {
}
}
my $contact_groups = join ',', @contact_groups;
+ $displayname ||= $srvname;
if ( $first ){
print $out "define service{\n";
print $out "\tuse $generic_service\n";
print $out "\thost_name $hostname\n";
print $out "\tservice_description $srvname\n";
+ print $out "\tdisplay_name $displayname\n";
print $out "\tcontact_groups $contact_groups\n";
print $out "\tcheck_command $checkcmd\n";
print $out "}\n\n";
@@ -596,6 +601,7 @@ sub print_service {
print $out "define serviceescalation{\n";
print $out "\thost_name $hostname\n";
print $out "\tservice_description $srvname\n";
+ print $out "\tdisplay_name $displayname\n";
print $out "\tfirst_notification $fn\n";
print $out "\tlast_notification $ln\n";
print $out "\tnotification_interval
".$self->{NAGIOS_NOTIF_INTERVAL}."\n";
-----------------------------------------------------------------------
Summary of changes:
lib/Netdot/Exporter.pm | 5 +++--
lib/Netdot/Exporter/Nagios.pm | 14 ++++++++++----
2 files changed, 13 insertions(+), 6 deletions(-)
hooks/post-receive
--
Netdot
------------------------------
_______________________________________________
Netdot-devel mailing list
[email protected]
https://osl.uoregon.edu/mailman/listinfo/netdot-devel
End of Netdot-devel Digest, Vol 71, Issue 7
*******************************************