Я использую плагин Influx Telegraf SNMP для сбора данных об использовании полосы пропускания байтов сетевым устройством. Проблема, с которой я сталкиваюсь, заключается в том, что telegraf создает различные теги: agent_host, ifAlias, ifDescr, ifName, но когда речь идет о Grafana, я хотел бы отобразить заголовок:
$ tag_agent_host - $ tag_ifName ($ tag_ifDescr)
Agent_host - это сетевое устройство, и я заставляю grafana повторять диаграммы на основе $ tag_ifName, который я выполняю sh, определяя переменная для диаграммы: $ interface_name. Проблема в том, что повторяющиеся заголовки графиков Grafana поддерживают только одну переменную для повторяющихся графиков - в моем случае у меня есть 2 выпадающих списка:
$ device (сопоставление с agent_host):
Показать значения тега с ключом = "agent_host"
$ имя_интерфейса (сопоставляется с ifName и имеет параметр ALL и используется для повторной диаграммы Grafana)
SHOW TAG VALUES WITH key = "ifName" WHERE agent_host = ~ / ^ $ device $ /
Создание третьей переменной, такой как представленная ниже, бесполезно, поскольку Grafana будет связывать только значение переменной диаграммы, являющейся частью повторения, которая позволяет выполнять повтор только по одному имени переменной.
При отображении названия диаграмм в следующем формате:
$device - $interface_name - $interface_descr
* 10 37 * Фактические названия будут выглядеть следующим образом:
switch1 - G1/0/1 - All
switch1 - G1/0/2 - All
...
switch1 - Tunnel0 - All
Очевидно, что это не то, что я хотел - поэтому, чтобы иметь возможность сделать это, либо мне нужно иметь возможность определить одну переменную это показывает, что ifName и ifDescr объединены в одно, концептуально что-то вроде:
SHOW TAG VALUES WITH key="ifDesrc" AND key="ifName" WHERE agent_host=~/^$device$/
или SELECT DISTINCT (ifName, ifDesr c) FROM snmp WHERE agent_host = / ^ $ device $ /
Очевидно, что ни один из них не будет работать, потому что InfluxDB не поддерживает SHOW TAG VALUES в качестве матрицы из 2 или более комбинированных тегов, а DISTINCT не поддерживает более 1 тега в качестве параметра, и SELECT сам по себе не сможет гарантировать, что моя переменная не повторений
SELECT ifName, ifDescr FROM snmp WHERE agent_host=/^$device$/ AND $timeFilter