# -*- perl -*- use strict; package CHIRP::IBM::OS390; use lib "/usr/local/cricket/lib"; use snmpUtils; my $oid_iso = ".1"; # .1 my $oid_org = "$oid_iso.3"; # .1.3 my $oid_dod = "$oid_org.6"; # .1.3.6 my $oid_internet = "$oid_dod.1"; # .1.3.6.1 my $oid_mgmt = "$oid_internet.2"; # .1.3.6.1.2 my $oid_mib_2 = "$oid_mgmt.1"; # .1.3.6.1.2.1 my $oid_system = "$oid_mib_2.1"; # .1.3.6.1.2.1.1 my $oid_sysDescr = "$oid_system.1"; # .1.3.6.1.2.1.1.1 my $oid_interfaces = "$oid_mib_2.2"; # .1.3.6.1.2.1.2 my $oid_ifTable = "$oid_interfaces.2"; # .1.3.6.1.2.1.2.2 my $oid_ifEntry = "$oid_ifTable.1"; # .1.3.6.1.2.1.2.2.1 my $oid_ifIndex = "$oid_ifEntry.1"; # .1.3.6.1.2.1.2.2.1.1 my $oid_ifDescr = "$oid_ifEntry.2"; # .1.3.6.1.2.1.2.2.1.2 my $oid_ifType = "$oid_ifEntry.3"; # .1.3.6.1.2.1.2.2.1.3 my $oid_ifMtu = "$oid_ifEntry.4"; # .1.3.6.1.2.1.2.2.1.4 my $oid_ifSpeed = "$oid_ifEntry.5"; # .1.3.6.1.2.1.2.2.1.5 my $oid_ifPhysAddress = "$oid_ifEntry.6"; # .1.3.6.1.2.1.2.2.1.6 my $oid_ifAdminStatus = "$oid_ifEntry.7"; # .1.3.6.1.2.1.2.2.1.7 my $oid_ifOperStatus = "$oid_ifEntry.8"; # .1.3.6.1.2.1.2.2.1.8 my $oid_ifLastChange = "$oid_ifEntry.9"; # .1.3.6.1.2.1.2.2.1.9 my $oid_ifInOctets = "$oid_ifEntry.10"; # .1.3.6.1.2.1.2.2.1.10 my $oid_ifInUcastPkts = "$oid_ifEntry.11"; # .1.3.6.1.2.1.2.2.1.11 my $oid_ifInNUcastPkts = "$oid_ifEntry.12"; # .1.3.6.1.2.1.2.2.1.12 my $oid_ifInDiscards = "$oid_ifEntry.13"; # .1.3.6.1.2.1.2.2.1.13 my $oid_ifInErrors = "$oid_ifEntry.14"; # .1.3.6.1.2.1.2.2.1.14 my $oid_ifInUnknownProtos = "$oid_ifEntry.15"; # .1.3.6.1.2.1.2.2.1.15 my $oid_ifOutOctets = "$oid_ifEntry.16"; # .1.3.6.1.2.1.2.2.1.16 my $oid_ifOutUcastPkts = "$oid_ifEntry.17"; # .1.3.6.1.2.1.2.2.1.17 my $oid_ifOutNUcastPkts = "$oid_ifEntry.18"; # .1.3.6.1.2.1.2.2.1.18 my $oid_ifOutDiscards = "$oid_ifEntry.19"; # .1.3.6.1.2.1.2.2.1.19 my $oid_ifOutErrors = "$oid_ifEntry.20"; # .1.3.6.1.2.1.2.2.1.20 my $oid_ifOutQLen = "$oid_ifEntry.21"; # .1.3.6.1.2.1.2.2.1.21 my $oid_ifSpecific = "$oid_ifEntry.22"; # .1.3.6.1.2.1.2.2.1.22 my $oid_private = "$oid_internet.4"; # .1.3.6.1.4 my $oid_enterprise = "$oid_private.1"; # .1.3.6.1.4.1 sub GenConfig { my($hostname, $snmp_community, $snmp_port, $options) = @_; $snmp_community = 'public' unless defined($snmp_community); $snmp_port = '161' unless defined($snmp_port); my($snmp) = "$snmp_community\@$hostname:$snmp_port"; my($config) = {}; # OIDs $config->{oid}->{"IBMIfInOctets"} = "$oid_ifInOctets"; $config->{oid}->{"IBMIfOutOctets"} = "$oid_ifOutOctets"; $config->{oid}->{"IBMIfInErrors"} = "$oid_ifInErrors"; $config->{oid}->{"IBMIfOutErrors"} = "$oid_ifOutErrors"; # DataSources $config->{datasource}->{"--default--"}->{"rrd-ds-type"} = "COUNTER"; $config->{datasource}->{"IBMIfInOctets"}->{"ds-source"} = "snmp://%snmp%/IBMIfInOctets.%inst%"; $config->{datasource}->{"IBMIfOutOctets"}->{"ds-source"} = "snmp://%snmp%/IBMIfOutOctets.%inst%"; $config->{datasource}->{"IBMIfInErrors"}->{"ds-source"} = "snmp://%snmp%/IBMIfInErrors.%inst%"; $config->{datasource}->{"IBMIfOutErrors"}->{"ds-source"} = "snmp://%snmp%/IBMIfOutErrors.%inst%"; # Graphs $config->{graph}->{"--default--"}->{"y-axis"} = '"Bits per second"'; $config->{graph}->{"--default--"}->{"units"} = '"bits/sec"'; $config->{graph}->{"--default--"}->{"bytes"} = "true"; $config->{graph}->{"--default--"}->{"precision"} = "0"; $config->{graph}->{"--default--"}->{"y-min"} = "0"; $config->{graph}->{"--default--"}->{"scale"} = "8,*"; $config->{graph}->{"IBMIfInOctets"}->{"legend"} = '"Average bits in"'; $config->{graph}->{"IBMIfInOctets"}->{"draw-as"} = "AREA"; $config->{graph}->{"IBMIfOutOctets"}->{"legend"} = '"Average bits out"'; $config->{graph}->{"IBMIfOutOctets"}->{"draw-as"} = "LINE3"; $config->{graph}->{"IBMIfInErrors"}->{"y-axis"} = '"Errors per second"'; $config->{graph}->{"IBMIfInErrors"}->{"units"} = '"errors/sec"'; $config->{graph}->{"IBMIfInErrors"}->{"legend"} = '"Average errors"'; $config->{graph}->{"IBMIfInErrors"}->{"draw-as"} = "AREA"; $config->{graph}->{"IBMIfOutErrors"}->{"y-axis"} = '"Errors per second"'; $config->{graph}->{"IBMIfOutErrors"}->{"units"} = '"errors/sec"'; $config->{graph}->{"IBMIfOutErrors"}->{"legend"} = '"Average errors"'; $config->{graph}->{"IBMIfOutErrors"}->{"draw-as"} = "LINE3"; # TargetTypes $config->{targettype}->{"IBMIf"}->{"ds"} = '"IBMIfInOctets, IBMIfOutOctets, IBMIfInErrors, IBMIfOutErrors"'; $config->{targettype}->{"IBMIf"}->{"view"} = '"Traffic: IBMIfInOctets IBMIfOutOctets, Errors: IBMIfInErrors IBMIfOutErrors"'; # Targets $config->{target}->{"--default--"}->{"snmp-host"} = "$hostname"; $config->{target}->{"--default--"}->{"snmp-community"} = "$snmp_community"; $config->{target}->{"--default--"}->{"snmp-port"} = "$snmp_port"; $config->{target}->{"--default--"}->{"snmp"} = "%snmp-community%@%snmp-host%:%snmp-port%"; $config->{target}->{"--default--"}->{"directory-desc"} = '"IBM OS/390"'; my $interface = {}; foreach my $row (snmpUtils::walk($snmp, "$oid_ifDescr")) { my($oid, $value) = split(/:/, $row); $interface->{$oid}->{Descr} = $value; } foreach my $item (keys % {$interface}) { my $portName = "Port_" . $item; $config->{target}->{"$portName"}->{"target-type"} = "IBMIf"; $config->{target}->{"$portName"}->{"short-desc"} = '"' . $interface->{$item}->{Descr} . '"'; $config->{target}->{"$portName"}->{"order"} = 1000 - $item; $config->{target}->{"$portName"}->{"inst"} = $item; } return $config; } 1;