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
*******************************************

Reply via email to