Se o seu objetivo final é apenas ter e visualizar as métricas, uma ferramenta como cacti, munin, mrtg poderia ajudá-lo com menos detalhes do que o solicitado em sua pergunta.
Dito isto, a Cisco suporta os MIBs padrão para interfaces.
Cada interface receberá um índice. Todas as informações para as interfaces serão armazenadas em tabelas. Cada tabela é referenciada por um OID específico, e as informações para a interface específica nessa tabela serão referenciadas ao anexar o índice da interface ao OID da tabela.
Como exemplo, aqui está um script que pesquisa o ifIndex, ifDescr, ifAdminStatus e ifOperStatus para cada interface em um dispositivo. Este exemplo mostra os recursos usados e o ato de procurar valores de tabela com base em seu índice. (Eu tirei este exemplo de um pedaço de código muito maior para simplificá-lo, então provavelmente há alguns pequenos bugs):
#!/usr/bin/perl
use Net::SNMP;
my %oids = (
'ifDescr' => '1.3.6.1.2.1.2.2.1.2',
'ifType' => '1.3.6.1.2.1.2.2.1.3',
'ifAdminStatus' => '1.3.6.1.2.1.2.2.1.7',
'ifOperStatus' => '1.3.6.1.2.1.2.2.1.8',
);
my $device = shift || die "Need device to poll";
my $community = shift || 'public';
my($snmp,$snmp_error) = Net::SNMP->session(-hostname => $device,
-community => $community);
my $info;
if (!$snmp) {
printf STDERR ("Couldn't create snmp object for $d: $snmp_error\n");
} else {
$info = $snmp->get_entries(-columns => [ $oids{ifDescr}, $oids{ifAdminStatus},
$oids{ifOperStatus}, $oids{ifType} ]);
if (!$info) {
printf STDERR ("Couldn't poll $d: %s\n", $snmp->error());
}
}
foreach my $oid (grep /^$oids{ifDescr}\./, keys(%$info)) {
my($index) = $oid =~ m|\.(\d+)$|;
print join(',', $device,
$index,
$info->{"$oids{ifDescr}.$index"},
$info->{"$oids{ifType}.$index"},
$info->{"$oids{ifAdminStatus}.$index"},
$info->{"$oids{ifOperStatus}.$index"}), "\n";
}
Todas as coisas interessantes estão em 1.3.6.1.2.1.2.2.1
, o ifEntry OID. Aqui está um link que explica alguns dos membros dele, incluindo os que eu usado acima e outros que você possa estar interessado, como Octeto, Pacotes, Erros, etc