티스토리 뷰
promql로 뽑아내는 결과중 label 값을 변경하는 다음 label_replace, label_join에 대해 예제와 함께 간단한 사용법을 알아보자.
label_replace
label_replace는 실제 replace가 아닌 add 이다.
다음과 같은 promql query로 label_replace 사용이 가능하다.
label_replace(rate(demo_api_request_duration_seconds_count[5m]), "newstatus", "$1", "status", "(^2.*)")
실제 동작은 status label이 regex "(^2.*)"에 의해 2로 시작되는 결과값에만 newstatus라는 label을 추가한다라고 해석할수 있다.
하여 다음과 같은 기본 query 결과를
{instance="demo-service-0:10000", job="demo", method="GET", path="/api/bar", status="200"} 16.691228070175438
{instance="demo-service-0:10000", job="demo", method="GET", path="/api/bar", status="500"} 0.10175438596491228
{instance="demo-service-0:10000", job="demo", method="GET", path="/api/foo", status="200"} 30.782456140350877
{instance="demo-service-0:10000", job="demo", method="GET", path="/api/foo", status="500"} 0.2175438596491228
{instance="demo-service-0:10000", job="demo", method="GET", path="/api/nonexistent", status="404"} 0.982456140350877
{instance="demo-service-0:10000", job="demo", method="POST", path="/api/bar", status="200"} 3.6526315789473682
다음과 같이 변형하게 된다.
{instance="demo-service-0:10000", job="demo", method="GET", newstatus="200", path="/api/bar", status="200"} 17.403508771929825
{instance="demo-service-0:10000", job="demo", method="GET", path="/api/bar", status="500"} 0.06666666666666667
{instance="demo-service-0:10000", job="demo", method="GET", newstatus="200", path="/api/foo", status="200"} 31.540350877192985
{instance="demo-service-0:10000", job="demo", method="GET", path="/api/foo", status="500"} 0.22807017543859648
{instance="demo-service-0:10000", job="demo", method="GET", path="/api/nonexistent", status="404"}
label_replace without origin column
앞서 이야기했듯이 add의 개념이기에 sum without 을 사용하여 추가한 column은 놔두고 기존 column은 제거하여 출력하도록 한다.
sum without (status) (label_replace(rate(demo_api_request_duration_seconds_count[5m]), "newstatus", "$1", "status", "(^2.*)"))
{instance="demo-service-0:10000", job="demo", method="GET", newstatus="200", path="/api/bar"} 19.915789473684207
{instance="demo-service-0:10000", job="demo", method="GET", path="/api/bar"} 0.06666666666666667
{instance="demo-service-0:10000", job="demo", method="GET", newstatus="200", path="/api/foo"} 35.84561403508771
{instance="demo-service-0:10000", job="demo", method="GET", path="/api/foo"} 0.2385964912280702
{instance="demo-service-0:10000", job="demo", method="GET", path="/api/nonexistent"} 1.2491228070175437
{instance="demo-service-0:10000", job="demo", method="POST", newstatus="200", path="/api/bar"} 4.705263157894737
{instance="demo-service-0:10000", job="demo", method="POST", path="/api/bar"} 0.03157894736842105
{instance="demo-service-0:10000", job="demo", method="POST", newstatus="200", path="/api/foo"} 3.7508771929824563
{instance="demo-service-0:10000", job="demo", method="POST", path="/api/foo"} 0.07719298245614034
label_join
만약 두개의 label을 합쳐서 출력하고자 한다면 label_join을 사용하면 된다.
label_join(rate(demo_api_request_duration_seconds_count[5m]), "endpoint", " ", "method", "path")
해석하자면 method 와 path를 합친 endpoint라는 label을 추가한다는 의미이다.
실제로 method와 path를 join 된 새로운 endpoint가 함께 결과로 출력되게 된다.
{endpoint="GET /api/bar", instance="demo-service-0:10000", job="demo", method="GET", path="/api/bar", status="200"} 21.10175438596491
{endpoint="GET /api/bar", instance="demo-service-0:10000", job="demo", method="GET", path="/api/bar", status="500"} 0.05263157894736842
{endpoint="GET /api/foo", instance="demo-service-0:10000", job="demo", method="GET", path="/api/foo", status="200"} 37.16491228070175
{endpoint="GET /api/foo", instance="demo-service-0:10000", job="demo", method="GET", path="/api/foo", status="500"} 0.23157894736842105
{endpoint="GET /api/nonexistent", instance="demo-service-0:10000", job="demo", method="GET", path="/api/nonexistent", status="404"} 1.3473684210526315
{endpoint="POST /api/bar", instance="demo-service-0:10000", job="demo", method="POST", path="/api/bar", status="200"} 4.989473684210527
참고사이트
'Cloud > Private Cloud' 카테고리의 다른 글
cURL with OpenStack (0) | 2021.04.09 |
---|---|
openstack instance build stuck (0) | 2021.02.24 |
kolla-ansible with elasticsearch (0) | 2021.02.23 |
Packer on OpenStack (0) | 2021.02.19 |
gophercloud sdk (0) | 2021.02.08 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- DevSecOps
- kubernetes
- nginx-ingress
- hashicorp boundary
- Terraform
- jenkins
- kata container
- macvlan
- ansible
- socket
- Helm Chart
- metallb
- mattermost
- Jenkinsfile
- minio
- openstack backup
- OpenStack
- vmware openstack
- K3S
- crashloopbackoff
- kubernetes install
- minikube
- boundary ssh
- GateKeeper
- wsl2
- open policy agent
- azure policy
- ceph
- openstacksdk
- aquasecurity
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함