ln.skyscanner/checks/Ubiquity.cs

85 lines
3.2 KiB
C#

using System;
using ln.skyscanner.entities;
using ln.types;
using ln.snmp;
using System.Collections.Generic;
using ln.snmp.types;
using ln.logging;
namespace ln.skyscanner.checks
{
public class Ubiquity : SkyCheck
{
public Ubiquity()
:base("ubiquity")
{
}
public override void Check(SkyChecker skyChecker,ref SkyCheckState checkState,Node node)
{
UbiquityCheckState ubiquityCheckState = checkState as UbiquityCheckState;
foreach (URI snmpUri in node.FindURIs("snmp"))
{
using (SnmpInterface snmp = SnmpInterface.FromURI(snmpUri,skyChecker.SNMPEngine))
{
Sequence[][] ptp = snmp.snmpWalk(new string[] {
"1.3.6.1.4.1.41112.1.3.2.1.5",
"1.3.6.1.4.1.41112.1.3.2.1.6",
"1.3.6.1.4.1.41112.1.3.2.1.11",
"1.3.6.1.4.1.41112.1.3.2.1.14",
"1.3.6.1.4.1.41112.1.3.3.1.64",
"1.3.6.1.4.1.41112.1.3.3.1.66"
});
foreach (Sequence[] row in ptp)
{
ubiquityCheckState.WritePerformanceValue("ptp_rx_capa", (double)((Integer)(row[0].Items[1])).LongValue);
ubiquityCheckState.WritePerformanceValue("ptp_tx_capa", (double)((Integer)(row[1].Items[1])).LongValue);
ubiquityCheckState.WritePerformanceValue("ptp_rx_pwr", (double)((Integer)(row[2].Items[1])).LongValue, -65.0,0,-75.0,0);
ubiquityCheckState.WritePerformanceValue("ptp_tx_pwr", (double)((Integer)(row[3].Items[1])).LongValue);
long rxBytes = ((Integer)(row[4].Items[1])).LongValue;
long txBytes = ((Integer)(row[5].Items[1])).LongValue;
ubiquityCheckState.RXRate.Update(rxBytes * 8);
ubiquityCheckState.TXRate.Update(txBytes * 8);
ubiquityCheckState.WritePerformanceValue("ptp_rx_rate", ubiquityCheckState.RXRate.Current);
ubiquityCheckState.WritePerformanceValue("ptp_tx_rate", ubiquityCheckState.TXRate.Current);
}
}
}
checkState.CheckState = CheckState.OK;
}
public override bool IsValid(Node node)
{
return (node.Vendor != null) && node.Vendor.Equals("Ubiquity");
}
public override SkyCheckState PrepareCheckState(SkyChecker skyChecker, Node node)
{
return new UbiquityCheckState(this, node);
}
}
class UbiquityCheckState : SkyCheckState
{
public dVdT RXRate { get; private set; }
public dVdT TXRate { get; private set; }
public UbiquityCheckState(SkyCheck skyCheck,Node node)
:base(skyCheck,node)
{
RXRate = new dVdT();
TXRate = new dVdT();
}
private UbiquityCheckState()
{ }
}
}