+ {{ .Labels.ifDescr }} |
+ up
+ {{ else if eq (. | value) 2.0}}">down
+ {{ else if eq (. | value) 3.0}}">testing
+ {{ else if eq (. | value) 4.0}}">unknown
+ {{ else if eq (. | value) 5.0}}">dormant
+ {{ else if eq (. | value) 6.0}}">notPresent
+ {{ else if eq (. | value) 7.0}}">lowerLayerDown
+ {{else}}">{{ end }} |
+ {{ template "prom_query_drilldown" (args (printf "ifHighSpeed{job='snmp',instance='%s',ifDescr='%s'} * 1e6 or ifSpeed{job='snmp',instance='%s',ifDescr='%s'}" .Labels.instance .Labels.ifDescr .Labels.instance .Labels.ifDescr) "b/s" "humanize")}} |
+ {{ template "prom_query_drilldown" (args (printf "rate(ifHCInOctets{job='snmp',instance='%s',ifDescr='%s'}[5m]) * 8 or rate(ifInOctets{job='snmp',instance='%s',ifDescr='%s'}[5m]) * 8" .Labels.instance .Labels.ifDescr .Labels.instance .Labels.ifDescr) "b/s" "humanize")}} |
+ {{ template "prom_query_drilldown" (args (printf "rate(ifHCOutOctets{job='snmp',instance='%s',ifDescr='%s'}[5m]) * 8 or rate(ifOutOctets{job='snmp',instance='%s',ifDescr='%s'}[5m]) * 8" .Labels.instance .Labels.ifDescr .Labels.instance .Labels.ifDescr) "b/s" "humanize")}} |
+ {{ template "prom_query_drilldown" (args (printf "rate(ifInDiscards{job='snmp',instance='%s',ifDescr='%s'}[5m]) + rate(ifOutDiscards{job='snmp',instance='%s',ifDescr='%s'}[5m]) * 8" .Labels.instance .Labels.ifDescr .Labels.instance .Labels.ifDescr) "/s" "humanizeNoSmallPrefix")}} |
+ {{ template "prom_query_drilldown" (args (printf "rate(ifInErrors{job='snmp',instance='%s',ifDescr='%s'}[5m]) + rate(ifOutErrors{job='snmp',instance='%s',ifDescr='%s'}[5m]) * 8" .Labels.instance .Labels.ifDescr .Labels.instance .Labels.ifDescr) "/s" "humanizeNoSmallPrefix")}} |
+
+{{ end }}
+{{ template "prom_content_tail" . }}
+
+{{ template "tail" }}
diff --git a/consoles/snmp.html b/consoles/snmp.html
new file mode 100644
index 000000000..cb4e3ddb4
--- /dev/null
+++ b/consoles/snmp.html
@@ -0,0 +1,41 @@
+{{ template "head" . }}
+
+{{ template "prom_right_table_head" }}
+
+
+ Device |
+ Up |
+ Ports Up |
+ Ports Total |
+ In |
+ Out |
+ Discards |
+ Errors |
+
+{{ range query "up{job='snmp'}" | sortByLabel "instance" }}
+
+ {{ .Labels.instance }} |
+ Yes{{ else }} class="alert-danger">No{{ end }} |
+ {{ query (printf "ifOperStatus{job='snmp',instance='%s'} == 1" .Labels.instance) | len }} |
+ {{ template "prom_query_drilldown" (args (printf "count(ifOperStatus{job='snmp',instance='%s'})" .Labels.instance) ) }} |
+ {{ template "prom_query_drilldown" (args (printf "8 * sum by (instance)(rate(ifHCInOctets{job='snmp',instance='%s'}[5m]) or rate(ifInOctets{job='snmp',instance='%s'}[5m]))" .Labels.instance .Labels.instance) "b/s" "humanize")}} |
+ {{ template "prom_query_drilldown" (args (printf "8 * sum by (instance)(rate(ifHCOutOctets{job='snmp',instance='%s'}[5m]) or rate(ifOutOctets{job='snmp',instance='%s'}[5m]))" .Labels.instance .Labels.instance) "b/s" "humanize")}} |
+ {{ template "prom_query_drilldown" (args (printf "8 * sum by (instance)(rate(ifInDiscards{job='snmp',instance='%s'}[5m]) or rate(ifOutDiscards{job='snmp',instance='%s'}[5m]))" .Labels.instance .Labels.instance) "/s" "humanizeNoSmallPrefix")}} |
+ {{ template "prom_query_drilldown" (args (printf "8 * sum by (instance)(rate(ifInErrors{job='snmp',instance='%s'}[5m]) or rate(ifOutErrors{job='snmp',instance='%s'}[5m]))" .Labels.instance .Labels.instance) "/s" "humanizeNoSmallPrefix")}} |
+
+{{ else }}
+No devices found. |
+{{ end }}
+
+{{ template "prom_content_tail" . }}
+
+{{ template "tail" }}