Grafana CLI(gcx)로 Grafana Advisor 관리하기
Grafana CLI(gcx)로 Grafana Advisor 관리하기
Grafana Advisor는 데이터 소스, 플러그인, Grafana 인스턴스에 대해 정기적으로 검사(checks)를 수행해요. 여기서는 Grafana CLI 도구인 gcx를 사용해 Advisor의 checks와 checktypes를 관리하는 방법을 다룹니다. gcx는 Grafana 리소스를 코드로 관리하기 위한 커맨드라인 도구예요.
참고: Grafana Advisor는 데이터 소스, 플러그인, Grafana 인스턴스를 정기적으로 검사하며, 향후 릴리스에서 더 많은 영역을 다루도록 확장될 예정입니다.
출처: 문서
본문
gcx는 Grafana 리소스를 코드로 관리하기 위한 CLI 도구입니다. 설치·구성은 Grafana CLI 문서를 참고하세요. gcx로 Advisor의 checks와 checktypes를 관리할 수 있습니다.
검사 목록 가져오기
gcx resources get checks -o wide
검사된 요소와 실패한 요소를 더 자세히 보려면 JSON 출력을 조사합니다.
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'
검사 유형 목록 가져오기
gcx resources get checktypes -o wide
모든 검사 유형의 실패 표시
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'
특정 유형의 검사 실행
특정 유형의 검사를 실행하려면 Check 리소스를 만들어 푸시합니다.
mkdir -p resources/Check/
echo '{
"kind":"Check",
"metadata":{
"name":"check-manual",
"labels":{"advisor.grafana.app/type":"datasource"}, # 실행할 검사 유형으로 교체
"namespace":"<namespace>" # Grafana 인스턴스 네임스페이스 또는 온프레미스면 "default"
},
"apiVersion":"advisor.grafana.app/v0alpha1",
"spec":{"data":{}},
"status":{
"report":{
"count":0,
"failures":[]
}
}
}' > resources/Check/check-manual.json
gcx push checks/check-manual
다음으로 검사가 실행되고 결과가 나올 때까지 기다립니다.
gcx resources get checks/check-manual -o json | jq '.status.report'
업데이트가 필요한 플러그인 가져오기
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'
비정상 데이터 소스 찾기
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'