LabHub
배우기 러닝패스 코스

Envoy 내부 구조 · 이름이 곧 인터페이스다 · 실습

오백 개의 숫자에서 필요한 것만 꺼낸다

LabHub 에서 이어서 보기

목표

통계 이름의 구조를 세 갈래로 나눠 보고, 꺼내는 법과 쪼개는 규칙과 덜어내는 법을 차례로 익힌 뒤, 이름을 바꿨을 때 무엇이 사라지는지 직접 확인한다.

왜 중요한가

통계는 대시보드와 알림이 딛고 서 있는 바닥이다. 그런데 그 바닥은 이름으로 되어 있어서, 이름의 규칙을 모르면 /stats 에서 본 값을 대시보드 질의로 옮기지 못하고, 이름을 가볍게 바꿨다가 그래프를 통째로 비운다. 여기에 더해 카운터와 게이지를 구분하지 못하면 '되돌렸는데 안 바뀐다' 에서 막히고, 제외 목록의 성질을 모르면 '필요해지면 그때 켜지' 라고 미뤘다가 정작 필요한 순간에 과거 값이 없는 것을 알게 된다.

단계

1. 업스트림 둘을 띄우세요 — 8093ok, 8094fail. /root/envd-stats/stats.yamlstat_prefixshop 인 리스너와 클러스터 good·bad 를 두고 띄우세요(관리 9971, 리스너 127.0.0.1:10071). /hello 를 다섯 번, /bad/x 를 한 번 요청한 뒤 /root/envd-stats/01-names.txtcluster=·http=·listener= 세 줄을 적으세요 — 각각 cluster.good.upstream_rq_total, http.shop.downstream_rq_total, 그 리스너의 downstream_cx_total 통계의 이름 전체입니다.
2. /statsfilter 를 붙여 upstream_rq_total 이 든 통계만 뽑고, format=json 을 함께 붙여 /root/envd-stats/02-filter.json 에 저장하세요. 그리고 /root/envd-stats/02-filter.txttotal_stats=(필터 없이 받은 줄 수)와 matched=(필터로 좁힌 통계 개수) 두 줄을 적으세요.
3. /stats/prometheus 를 받아 /root/envd-stats/03-prom.txtcluster.good.upstream_rq_total 에 해당하는 줄만 저장하세요. 그리고 /root/envd-stats/03-prom.mapenvoy_name=(프로메테우스에서의 지표 이름), label_key=(클러스터 이름이 담긴 라벨의 열쇠), value=(그 값) 세 줄을 적으세요.
4. /reset_counters 를 POST 한 뒤 두 통계를 다시 읽어 /root/envd-stats/04-reset.txtcounter_before=·counter_after=(cluster.good.upstream_rq_total), gauge_before=·gauge_after=(cluster.good.membership_total) 네 줄을 적으세요.
5. /root/envd-stats/stats-tags.yaml 을 만드세요 — stats.yaml 과 같되 최상위에 stats_config.stats_tags 를 두어 태그 이름 envd_cluster 를 정규식 ^cluster\.((.+?)\.) 로 뽑습니다. 띄우고 /hello 를 두 번 요청한 뒤 /stats/prometheus 에서 envd_cluster 라벨이 붙은 줄 하나를 /root/envd-stats/05-tags.txt 에 저장하세요.
6. /root/envd-stats/stats-trim.yaml 을 만드세요 — stats_config.stats_matcher.exclusion_list 로 접두사 cluster.bad. 인 통계를 제외합니다. 띄운 뒤 /root/envd-stats/06-trim.txtbefore=(5단계 설정에서의 전체 통계 줄 수), after=(이 설정에서의 줄 수), bad_stats=(이 설정에서 cluster.bad. 로 시작하는 줄 수) 세 줄을 적으세요.
7. /root/envd-stats/stats-rename.yaml 을 만드세요 — 1단계 설정에서 stat_prefixshop 에서 checkout 으로 바꾼 것입니다. 띄우고 /hello 를 두 번 요청한 뒤 /root/envd-stats/07-rename.txtold_prefix_stats=(http.shop. 로 시작하는 통계 줄 수), new_prefix_stats=(http.checkout. 로 시작하는 줄 수), new_rq_total=(http.checkout.downstream_rq_total 의 값) 세 줄을 적으세요.
8. /root/envd-stats/08-report.mdcounter_after_reset=·gauge_after_reset=(4단계), prom_label=(5단계에서 더한 태그 이름), trim_removed=(6단계의 before 에서 after 를 뺀 값), renamed_lost=(7단계에서 옛 접두사 통계가 사라졌으면 yes) 다섯 줄을 적고, 그 아래 배운 것을 네 줄 이상 적으세요.

참고

단계 8개

  1. 이름은 세 갈래로 시작한다
  2. 오백 개 중에서 필요한 것만 꺼낸다
  3. 같은 값이 다른 이름으로 나간다
  4. 되돌리는 단추는 절반에만 듣는다
  5. 이름을 쪼개는 규칙을 직접 정한다
  6. 내보내지 않을 것을 고른다
  7. 낱말 하나를 바꾸면 대시보드가 빈다
  8. 통계 운영 메모를 남긴다