This is documentation for the next version of Grafana documentation. For the latest stable release, go to the latest version.
Manage Grafana Advisor using the Grafana CLI
Note
Grafana Advisor is available in public preview. Grafana Labs offers limited support, and breaking changes might occur prior to the feature being made generally available.
Currently, Grafana Advisor performs regular checks on data sources, plugins, and your Grafana instance, but we’re planning to expand its capabilities in future releases to cover more aspects of your Grafana environment. You can suggest new checks and provide feedback through this form.
grafanactl, the Grafana CLI tool, is a command-line tool for managing Grafana resources as code. To install and configure it, refer to the
Grafana CLI documentation.
You can use grafanactl to manage Advisor checks and checktypes.
Get the list of checks
To get the list of checks, run:
grafanactl resources get checks -o wideFor a more detailed view, you can get the list of elements checked and failing inspecting the JSON output:
grafanactl 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'Get the list of check types
To obtain the list of check types:
grafanactl resources get checktypes -o wideShow all failures across every check type
To see all failures in your instance:
grafanactl 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'Run checks for a type
To run checks for a specific type, create the check resource and push it:
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
grafanactl push checks/check-manualNext, wait for the check to run and the results to be available:
grafanactl resources get checks/check-manual -o json | jq '.status.report'Get plugins that need an update
To identify the plugins that need an update:
grafanactl 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'Unhealthy data sources
To look for unhealthy data sources:
grafanactl 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'


