Управление Grafana Advisor с помощью Grafana CLI

Note

Grafana Advisor выполняет регулярные проверки источников данных, плагинов и вашего экземпляра Grafana, но в будущих выпусках его возможности будут расширены для охвата других аспектов вашей среды Grafana. Вы можете предложить новые проверки и оставить отзыв через эту форму.

gcx — инструмент командной строки Grafana для управления ресурсами Grafana как кодом. Сведения об установке и настройке см. в документации Grafana CLI.

С помощью gcx можно управлять ресурсами Advisor checks и checktypes.

Получение списка проверок

Чтобы получить список проверок, выполните:

Bash
gcx resources get checks -o wide

Для более подробного представления можно получить список проверенных и неуспешных элементов, изучив вывод JSON:

Bash
gcx resources get checks -o json | jq -r '
  ["TYPE","CHECKED","FAILURES"],
  (
    [.items[] | {
      type: .metadata.labels["advisor.grafana.app/type"],
      ts: .metadata.creationTimestamp,
      count: (.status.report.count // 0),
      failures: ((.status.report.failures // []) | length)
    }]
    | group_by(.type)
    | map(sort_by(.ts) | last)
    | sort_by(.type)
    | .[]
    | [.type, (.count | tostring), (.failures | tostring)]
  )
  | @tsv
' | column -t -s $'\t'

Получение списка типов проверок

Чтобы получить список типов проверок:

Bash
gcx resources get checktypes -o wide

Показать все сбои по всем типам проверок

Чтобы увидеть все сбои в вашем экземпляре:

Bash
gcx resources get checks -o json | jq -r '
  ["SEVERITY","ITEM","RULE","TYPE"],
  (
    [.items[] | {
      type: .metadata.labels["advisor.grafana.app/type"],
      ts: .metadata.creationTimestamp,
      failures: (.status.report.failures // [])
    }]
    | group_by(.type)
    | map(sort_by(.ts) | last)
    | map(select((.failures | length) > 0))
    | .[]
    | .type as $t
    | .failures[]
    | [.severity, .item, .stepID, $t]
  )
  | @tsv
' | column -t -s $'\t'

Запуск проверок для типа

Чтобы запустить проверки для конкретного типа, создайте ресурс проверки и отправьте его:

Bash
mkdir -p resources/Check/
echo '{
  "kind":"Check",
  "metadata":{
    "name":"check-manual",
    "labels":{"advisor.grafana.app/type":"datasource"}, # Replace with the check type you want to run
    "namespace":"<namespace>" # Replace with the namespace of your Grafana instance or "default" for on-premise
  },
  "apiVersion":"advisor.grafana.app/v0alpha1",
  "spec":{"data":{}},
  "status":{
    "report":{
      "count":0,
      "failures":[]
    }
  }
}' > resources/Check/check-manual.json
gcx push checks/check-manual

Затем дождитесь выполнения проверки и появления результатов:

Bash
gcx resources get checks/check-manual -o json | jq '.status.report'

Получение списка плагинов, требующих обновления

Чтобы определить плагины, требующие обновления:

Bash
gcx resources get checks -o json | jq -r '
  ["PLUGIN","SEVERITY","PLUGIN PATH"],
  (
    [.items[] | select(.metadata.labels["advisor.grafana.app/type"] == "plugin")]
    | sort_by(.metadata.creationTimestamp) | last
    | .status.report.failures[]?
    | select(.stepID == "update")
    | [.item, .severity, (.links[0].url // "-")]
  )
  | @tsv
' | column -t -s $'\t'

Нездоровые источники данных

Чтобы найти нездоровые источники данных:

Bash
gcx resources get checks -o json | jq -r '
  ["DATASOURCE","SEVERITY","DATASOURCE PATH"],
  (
    [.items[] | select(.metadata.labels["advisor.grafana.app/type"] == "datasource")]
    | sort_by(.metadata.creationTimestamp) | last
    | .status.report.failures[]?
    | select(.stepID == "health-check")
    | [.item, .severity, (.links[0].url // "-")]
  )
  | @tsv
' | column -t -s $'\t'