23.06.15
DEVOTEE를 활성화 시키면
지금 작성한 커뮤니티 글에 대해 1개의 댓글을 달아줍니다.
버튼을 누르면 글 수정 시 ChatGPT가 작성한 댓글이 수정됩니다.
| 컨텐츠 유형 | 제목 | 저장일 | 삭제 |
|---|
본인인증 로그인에 실패하였습니다.
회원이 아니시거나 본인인증 등록이
완료되지 않은 사용자입니다.
지난 블로그(https://devocean.sk.com/blog/techBoardDetail.do?ID=163447)에서는 Prometheus를 사용하여 kubernetes를 모니터링하는 방법과 TACO의 예를 통해 실제 배포하는 예를 설명하였다. 이어서 본 블로그에서는 Prometheus에서 부족했던 부분을 채우고 다양한 통합기능을 제공하는 Thanos에 대해 설명하고자 하고 설치하는 방법을 알아본다.
Prometheus는 cloud native 환경에 defacto standard인 모니터링 시스템이고 메트릭데이터를 잘 수집하고 저장하며 이에 대한 질의를 유연하게 제공하는 것으로 그 목적을 명확히 하고 있다.
Prometheus는 단일노드에서 로컬저장소를 사용하는 간결한 구조를 갖고 있고 이에 따라 H.A.를 완벽하게 구성하기 힘들다. 더욱이 Prometheus는 서버가 주체적으로 데이터를 수집해오는 server-side pool 방식을 사용하므로 prometheus 서버가 정지된 동안에 데이터 누락이 발생하게 된다. 이러한 문제점에으로 인해 HA에 대한 요구가 초기부터 있었으나 prometheus community 진영에서는 이는 관심사항이 아님을 명확히 하고 있다.
TACO에서도 이를 지원하기위해 동일한 설정의 프로메테우스를 복제하여 앞에 서비스를 통해 접근하도록 시도해보기도 했었다. 이때, 각 클라이언트가 접근시 특정 서버에 연결되고 해당 서버가 어떤 문제에 의해 누락된 데이터를 보여주는 문제가 발생했으며 주기적으로 재시도하면 서비스에서 연결시켜주는 서버에따라 데이터누락이 보였다가 사라졌다를 반복했다. 이에따라 상용으로 사용할수 없다고불가로 판단하였고 H.A. 기능을 내렸던 경험이 있다.
일반적으로 agent-push방식을 사용하는 모니터링시스템에서는 agent에서 큐나 재시도를 통해 서버장애를 대응할수 있다.
Prometheus의 부족한 부분을 채우면서 부가적인 기능을 제공하도록 Thanos가 등장했다. 비슷한 컨셉과 기능으로 등장했던 Cortex라는 프로젝트도 있으나 현재는 Thanos진영이 더 견고하게 움직이는 것으로 보인다.
Thanos에서 이야기하는 주요 특징은 다음과 같다.
.png)
출처 - thanos.io
Golobal Query View
다수의 prometheus 서버들과 클러스터들에 걸친 질의를 지원한다.
Unlimited Retention
Public cloud의 객체 저장소를 포함한 다양한 저장소에 메트릭을 저장할 수 있게 되었고 데이터 보관주기의 제약이 없어졌다.
Prometheus Compatible
Prometheus의 인터페이스와 거의 완벽하게 호환되는 API를 제공하여 기존 Prometheus 환경에 쉽게 적용가능하다.
DownSampling & Compaction
데이터의 시간주기별 데이터를 생성하여 통합데이터 조회의 성능을 높히고 데이터별 상세 저장주기 설정을 통해 저장소를 효율적으로 활용할 수 있다.
Thanos의 구성을 살펴보면 다음과 같다.
.png)
출처 - bitnami
다양한 컴포넌트들이 내부적으로 돌아가며 각각은 단일 소프트웨어로 배포되며 독립적인 기능을 수행한다.
Compactor
수집된 데이터를 기준에 따라 장기보관용 데이터로 변환 (rollout)
aggregated 데이터를 준비 (rollover)
비 동기로 동작하므로 cron 또는 daemon으로 실행시키는 것이 일반적
Store (Store API), Sidecar, Query와 연동하여 기능을 수행
Query (Querier)
PromQL을 처리하는 부분으로 필요한 Prometheus의 sidecar와 연결하여 필요한 데이터를 수집해 통합후 결과 리턴
질의를 Store (Store API), Sidecar등으로 전달하고 수집
Query Frontend
PromQL을 처리하는 사용자로부터 최초 진입점으로 캐시나 효율적인 쿼리 분배등을 처림
Query로 질의를 전달하고 결과를 받아 요청자에게 반환
Receiver
Remote write API를 사용하여 prometheus가 데이터를 보낼때 이를 받아 처리할때 사용
실시간으로 prometheus 데이터를 object storage로 저장하기 위한 기능
pull 방식으로 부족한 경우를 대비하기 위해 만든 것으로 생각되는 기능 (push gateway와도 같은 맥락)
Rule
Thanos에의해 연동된 모든 prometheus 대상의 룰을 정의하고 처리
Prometheus의 rule과 동일한 문법사용
Query를 통해 실시간 룰체크
Sidecar
Prometheus서버와 함께 하나의 POD로 구성되어 배포
Query의 요청을 처리
Store (StoreAPI)
저장소를 사용하는 모든 작업은 이 컴포넌트를 통과하고 하단의 Object Storage를 접근하는 단일포인트임
Sidecar도 이 기능을 수행
기타 Tools: 다양한 tool들이 존재
Object storage(bucket)를 다루는 명령 행
위 그림상에서 보여지는 Minio의 경우는 Object store로 사용하기 위한 임시 컴포넌트로 테스트등으로만 사용하고 실사용에서는 S3등 public cloud의 object storage를 사용하는 것을 가장 추천한다.
Thanos는 다음과 같이 활용가능하다.
멀티 Prometheus 연동
Global query view기능을 통해 다수의 prometheus를 하나의 인터페이스를 통해 조회하고 활용가능하다.
예를들어 container와 service mesh를 위한 별도의 용도별 Prometheus 들이 별도 존재하는 경우에도 thanos를 사용하면 container 상태와 service mesh 상태를 조합한 알람을 정의하고 실시간 감시할 수 있다.
Prometheus H.A.
동일한 설정을 갖은 다수의 Prometheus를 운영하고 thanos를 통해 연동하면 prometheus 서버가 장애가 발생하더라도 서비스의 단절이나 데이터의 누락을 방지할 수 있다.
이는 Global query view 기능과 메트릭 deduplication 기능을 통해 가능하다.
데이터 저장능력 향상
Object storage를 통한 데이터 무한 확장이 가능하고 저장소 분리 및 Rollover 기능등을 통해 데이터의 증가에따른 성능지연에 대응할 수 있다.
Thanos를 설치하는 방법은 여러가지가 있다. Go로 개발된 코드로부터 빌드하고 각각의 모듈을 실행하고 연결하는 방법부터 패키지저장소의 모듈들을 받아와 쓰는 방법까지 다양하다. 본 블로그에서는 간단하게 kubernetes상에 helm chart를 사용하여 배포하는 방법을 설명하겠다. 현재 Thanos 진영에서 배포하는 정식 helm chart는 존재하지 않고 bitnami나 Banzai Cloud (cisco)에서 제공하는 챠트가 있다. 더 먼저 시작되었고 높은 성숙도를 보이는 bitnami를 기준으로 설명하도록 하겠다.
코드와 부가적인 설명이 필요하면 다음 링크(https://github.com/bitnami/charts/tree/master/bitnami/thanos/)를 참조하도록 하자.
별도의 설정없이 기본 설치시 query와 query-frontend가 생성되는 것을 확인할 수 있다.
siim@u20-dev:~$ helm repo add bitnami
"bitnami" has been added to your repositorie
siim@u20-dev:~$ helm install my-release bitnami/thanos
NAME: my-release
LAST DEPLOYED: Fri Nov 5 11:54:43 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: thanos
CHART VERSION: 7.0.5
APP VERSION: 0.23.1** Please be patient while the chart is being deployed **
Thanos chart was deployed enabling the following components:
- Thanos Query
Thanos Query can be accessed through following DNS name from within your cluster:
my-release-thanos-query.default.svc.cluster.local (port 9090)
To access Thanos Query from outside the cluster execute the following commands:
1. Get the Thanos Query URL by running these commands:
export SERVICE_PORT=$(kubectl get --namespace default -o jsonpath="{.spec.ports[0].port}" services my-release-thanos-query)
kubectl port-forward --namespace default svc/my-release-thanos-query ${SERVICE_PORT}:${SERVICE_PORT} &
echo ":${SERVICE_PORT}"
2. Open a browser and access Thanos Query using the obtained URL.
siim@u20-dev:~$ kubectl get all -n default
NAME READY STATUS RESTARTS AGE
pod/my-release-thanos-query-6cd8c6ff57-nrtkg 1/1 Running 0 103s
pod/my-release-thanos-query-frontend-847f4c59cb-79pjr 1/1 Running 0 103s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.233.64.1 443/TCP 7d1h
service/my-release-thanos-query ClusterIP 10.233.94.10 9090/TCP,10901/TCP 103s
service/my-release-thanos-query-frontend ClusterIP 10.233.119.221 9090/TCP 103s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/my-release-thanos-query 1/1 1 1 103s
deployment.apps/my-release-thanos-query-frontend 1/1 1 1 103s
NAME DESIRED CURRENT READY AGE
replicaset.apps/my-release-thanos-query-6cd8c6ff57 1 1 1 103s
replicaset.apps/my-release-thanos-query-frontend-847f4c59cb 1 1 1 103s대부분의 thanos 컴포넌트없이 최소사양으로 설치된 것으로 실제 사용에는 무리가 있다. 일단 위에서 설치한 내용을 삭제하자.
siim@u20-dev:~$ helm delete my-release
release "my-release" uninstalled실제로 사용하기 위해서는 컴포넌트간 연동을 위한 설정이 반영되어야 한다. 여기서는 vanilla kubernetes에서부터 prometheus와 minio(object storage)를 구성한후 이에 연동하는 thanos를 구성하는 방법에 대해 설명하도록 한다.
kubernetes v1.16.x 이상이 준비되어 있는 상태에서 local-path를 설치한다.
siim@u20-dev:~/.kube$ kubectl apply -f
namespace/local-path-storage created
serviceaccount/local-path-provisioner-service-account created
clusterrole.rbac.authorization.k8s.io/local-path-provisioner-role created
clusterrolebinding.rbac.authorization.k8s.io/local-path-provisioner-bind created
deployment.apps/local-path-provisioner created
storageclass.storage.k8s.io/local-path created
configmap/local-path-config created
siim@u20-dev:~/.kube$ kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
local-path rancher.io/local-path Delete WaitForFirstConsumer false 12s
object store 연동을 위한 설정 생성한다.
siim@u20-dev:~/blog$ cat < objstore.yml
type: s3
config:
bucket: thanos
endpoint: thanos-minio:9000
access_key: taco
secret_key: password
insecure: true
EOF
siim@u20-dev:~/blog$ kubectl create secret generic taco-objstore-secret --from-file=objstore.yml
secret/taco-objstore-secret created
앞의 블로그(https://devocean.sk.com/blog/techBoardDetail.do?ID=163447)를 참조하여 prometheus를 설치한다. 블로그 내용에 추가적으로 thanos sidecar를 활성화 시켜야한다. value override 파일에 다음의 내용을 추가한 후 설치한다.
siim@u20-dev:~/blog$ cat < value-override-thanos-sidecar.yaml
prometheus:
prometheusSpec:
thanos:
minTime: -3h
objectStorageConfig:
key: objstore.yml
name: taco-objstore-secret
version: v0.18.0
thanosService:
annotations: {}
clusterIP: ""
enabled: true
labels: {}
port: 10901
portName: grpc
targetPort: grpc
type: ClusterIP
EOF
siim@u20-dev:~/blog$ helm repo add prometheus-community
"prometheus-community" has been added to your repositories
siim@u20-dev:~/blog$ helm repo update
siim@u20-dev:~/blog$ helm install prometheus prometheus-community/kube-prometheus-stack --version 19.2.2 -f value-override.yaml -f value-override-thanos-sidecar.yaml
NAME: prometheus
LAST DEPLOYED: Sat Nov 6 05:09:15 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
NOTES:
kube-prometheus-stack has been installed. Check its status by running:
kubectl --namespace default get pods -l "release=prometheus"
Visit for instructions on how to create & configure Alertmanager and Prometheus instances using the Operator.
수분이 지나면 prometheus 설치가 완료되고 이때 서비스를 확인하여 thanos에서 연동에 사용할 endpoint를 확인한다.
prometheus sever - lma-prometheus:9090
manager - lma-manager:9093
thanos sidecar - lma-thanos-discovery:10901
siim@u20-dev:~/blog$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
manager-operated ClusterIP None 9093/TCP,9094/TCP,9094/UDP 36m
kubernetes ClusterIP 10.233.0.1 443/TCP 9d
lma-manager ClusterIP 10.233.46.132 9093/TCP 36m
lma-operator ClusterIP 10.233.21.210 443/TCP 36m
lma-prometheus NodePort 10.233.18.122 9090:30008/TCP 36m
lma-thanos-discovery ClusterIP 10.233.22.240 10901/TCP,10902/TCP 36m
prometheus-grafana ClusterIP 10.233.1.107 80/TCP 36m
prometheus-operated ClusterIP None 9090/TCP 36m
앞에 설치한 prometheus의 구조에 의해 label이 하나 필요하다.
siim@u20-dev:~/blog$ kubectl label ns default name=lma
namespace/default labeledvanilla kubernetes설정을 적용하여 thanos를 구성하는 예제를 설명하겠다. minio thanos chart의 values.yaml 구조를 통해 반영할 수 있는 설정 및 적용방법을 유추할수 있는데, 실제 값(https://github.com/bitnami/charts/blob/master/bitnami/thanos/values.yaml)을 확인하여 각 컴포넌트들에 대한 설정이 분리되어 있는 것을 확인해보자. 각 컴포넌트는 기본적으로 해당 컴포넌트를 설치할지 여부(enabled)를 설정하도록 되어있으며 고유의 설정을 갖고있다. 정상적인 동작을 위해 설정해야 하는 부분은 다음을 참조하자.
query
연동할 backend (prometheus)를 설정한다. 다양한 방식의 설정을 지원하지만 본 예제에서는 직접적으로 IP:Port형태로 연결하는 방식을 사용한다. 주소는 앞에 prometheus 설치시 확인한 sidecar의 endpoint(lma-thanos-discovery:10901)을 사용한다.
stores:
- lma-thanos-discovery:10901
queryFrontend
cache는 메모리를 사용하도록 설정한다.
설치 완료후 브라우저를 통한 확인을 위해 NodePort를 설정한다.
나머지 설정은 필요에 따라 변경가능하지만 본 예제에서는 기본값을 사용한다.
config: |-
type: IN-MEMORY
config:
max_size: 512MB
max_size_items: 100
validity: 100s
service:
type: NodePort
nodePort:
http: 30030
bucketweb
object storage의 연동시 저장소를 확인할 수 있는 유틸리티 이지만 본 예제에서는 사용하지 않는다.
compactor
compactor의 동작을 지정하고 주기설정 등이 가능하다.
데이터별 저장주기와 compaction 실행주기를 설정하자.
retentionResolutionRaw: 30d
retentionResolution5m: 30d
retentionResolution1h: 10y
# Compaction 실행주기 설정
consistencyDelay: 30m
storegateway
compactor나 query가 object storage의 데이터를 참조할때 거치는 기능을 설정할수 있다.
메모리 캐시를 사용하도록 설정하고, query 연동을 위한 포트만 설정하자.
config: |-
type: IN-MEMORY
config:
max_size: 250MB
max_item_size: 125MB
ruler
발생 알람을 처리하기위해 manager에 대한 설정이 필요하다. - 주소와 레이블 'thanos'
또한 처리할 룰(예시에서는 metamonitoring그룹의 PrometheusDown)과 수행주기를 정의할 수 있다.
managers:
-
evalInterval: 1m
clusterName: thanos
config: |-
groups:
- name: "metamonitoring"
rules:
- : "PrometheusDown"
expr: absent(up{prometheus="monitoring/prometheus-operator"})
receive
외부 데이터를 직접적으로 받을때 쓰는 것으로 본 예제에서는 사용하지 않는다.
metrics
자체 모니터링을 위한 메트릭을 발생시킬 것인가를 설정하는데 본 예제에서는 사용하지 않는다.
objstoreConfig
object storage에 대한 설정을 입력한다. 자세한 내용은 링크(https://thanos.io/tip/thanos/storage.md/)를 참조하자.
자체적인 minio를 통해 object storage를 사용하는 설정은 아래와 같다.
type: s3
config:
bucket: thanos
endpoint: thanos-minio:9000
access_key: taco
secret_key: password
insecure: true
minio
bitnami의 helm chart를 통해 minio 설치하여 object store로 활용한다.
접근을 위한 계정이나 사용할 디스크에 대한 정의를 한다.
auth:
rootuser: taco
rootPassword: password
defaultBuckets: thanos
마지막으로 앞에서 설치한 local-path를 사용하기 위해 global에 다음 항목을 지정해야 한다.
global:
storageClass: local-pathObject stroage 연동을 위한 설정은 앞에서 prometheus의 sidecar에서 사용한 'taco-objstore-secret' 사용하겠다.
existingObjstoreSecret: taco-objstore-secret그 외 부분은 일반적인 helm chart에서 지정하는 값들이고 별도로 설정하지 않아도 본 블로그의 내용을 이해하는데 문제가 없다.
전체적으로 override할 값들 정리하면 아래와 같다.
# thanos.vo.simple.yaml
global:
storageClass: local-path
clusterDomain: dev
commonLabels:
appGroup: lma
app: thanos
existingObjstoreSecret: taco-objstore-secret
query:
enabled: true
stores:
- lma-thanos-discovery:10901
queryFrontend:
enabled: true
config: |-
type: IN-MEMORY
config:
max_size: 512MB
max_size_items: 100
validity: 100s
extraFlags:
- --query-range.split-interval=24h
- --query-range.max-retries-per-request=3
- --query-frontend.log-queries-longer-than=60s
service:
type: NodePort
ports:
http: 9090
nodePorts:
http: 30007
bucketweb:
enabled: false
compactor:
enabled: true
retentionResolutionRaw: 30d
retentionResolution5m: 30d
retentionResolution1h: 10y
# Compaction 실행주기 설정
consistencyDelay: 30m
storegateway:
enabled: true
config: |-
type: IN-MEMORY
config:
max_size: 250MB
max_item_size: 125MB
ruler:
enabled: true
managers:
-
evalInterval: 1m
clusterName: thanos
config: |-
groups:
- name: "metamonitoring"
rules:
- : "PrometheusDown"
expr: absent(up{prometheus="monitoring/prometheus-operator"})
receive:
enabled: false
metrics:
enabled: false
volumePermissions:
enabled: false
minio:
enabled: true
auth:
rootUser: taco
rootPassword: password
defaultBuckets: thanos위 설정을 이용해서 다음과 같이 설치하자.
siim@u20-dev:~$ helm install thanos bitnami/thanos --version 7.0.5 -f my/site-value/thanos.vo.simple.yaml
NAME: thanos
LAST DEPLOYED: Mon Nov 8 06:51:04 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
CHART NAME: thanos
CHART VERSION: 7.0.5
APP VERSION: 0.23.1** Please be patient while the chart is being deployed **
Thanos chart was deployed enabling the following components:
- Thanos Query
- Thanos Compactor
- Thanos Ruler
- Thanos Store Gateway
Thanos Query can be accessed through following DNS name from within your cluster:
thanos-query.default.svc.dev (port 9090)
To access Thanos Query from outside the cluster execute the following commands:
1. Get the Thanos Query URL by running these commands:
export SERVICE_PORT=$(kubectl get --namespace default -o jsonpath="{.spec.ports[0].port}" services thanos-query)
kubectl port-forward --namespace default svc/thanos-query ${SERVICE_PORT}:${SERVICE_PORT} &
echo ":${SERVICE_PORT}"
2. Open a browser and access Thanos Query using the obtained URL.아래와 같이 설치된 내역을 확인할 수 있고 브라우저를 통해 query frontend로 설정한 노드포트인 30007번 포트를 사용(http://CLUSER_IP:30007)하면 아래와 같이 PromQL 사용가능한 웹페이지에 접근할 수 있다.
siim@u20-dev:~$ kubectl get all
NAME READY STATUS RESTARTS AGE
pod/manager-lma-manager-0 2/2 Running 0 13m
pod/lma-operator-84556c46dc-lfjnf 1/1 Running 0 14m
pod/prometheus-grafana-5b96fb5467-t62np 2/2 Running 0 14m
pod/prometheus-lma-prometheus-0 3/3 Running 0 13m
pod/thanos-compactor-74f67f4ccc-cxpkh 1/1 Running 2 2m53s
pod/thanos-minio-694bbf98d6-v7n5l 1/1 Running 0 2m53s
pod/thanos-query-5cfd555bbc-wnp4r 1/1 Running 0 2m53s
pod/thanos-query-frontend-d96f4bdc8-d2p7b 1/1 Running 0 2m53s
pod/thanos-ruler-0 1/1 Running 0 2m53s
pod/thanos-storegateway-0 1/1 Running 2 2m53s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/manager-operated ClusterIP None 9093/TCP,9094/TCP,9094/UDP 13m
service/kubernetes ClusterIP 10.233.0.1 443/TCP 12d
service/lma-manager ClusterIP 10.233.33.165 9093/TCP 14m
service/lma-operator ClusterIP 10.233.42.200 443/TCP 14m
service/lma-prometheus NodePort 10.233.8.139 9090:30008/TCP 14m
service/lma-thanos-discovery ClusterIP 10.233.54.237 10901/TCP,10902/TCP 14m
service/prometheus-grafana ClusterIP 10.233.63.194 80/TCP 14m
service/prometheus-operated ClusterIP None 9090/TCP,10901/TCP 13m
service/thanos-compactor ClusterIP 10.233.11.10 9090/TCP 2m53s
service/thanos-minio ClusterIP 10.233.16.189 9000/TCP,9001/TCP 2m54s
service/thanos-query ClusterIP 10.233.7.226 9090/TCP,10901/TCP 2m54s
service/thanos-query-frontend NodePort 10.233.44.175 9090:30007/TCP 2m54s
service/thanos-ruler ClusterIP 10.233.16.80 9090/TCP,10901/TCP 2m53s
service/thanos-storegateway ClusterIP 10.233.4.177 9090/TCP,10901/TCP 2m54s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/lma-operator 1/1 1 1 14m
deployment.apps/prometheus-grafana 1/1 1 1 14m
deployment.apps/thanos-compactor 1/1 1 1 2m53s
deployment.apps/thanos-minio 1/1 1 1 2m53s
deployment.apps/thanos-query 1/1 1 1 2m53s
deployment.apps/thanos-query-frontend 1/1 1 1 2m53s
NAME DESIRED CURRENT READY AGE
replicaset.apps/lma-operator-84556c46dc 1 1 1 14m
replicaset.apps/prometheus-grafana-5b96fb5467 1 1 1 14m
replicaset.apps/thanos-compactor-74f67f4ccc 1 1 1 2m53s
replicaset.apps/thanos-minio-694bbf98d6 1 1 1 2m53s
replicaset.apps/thanos-query-5cfd555bbc 1 1 1 2m53s
replicaset.apps/thanos-query-frontend-d96f4bdc8 1 1 1 2m53s
NAME READY AGE
statefulset.apps/manager-lma-manager 1/1 13m
statefulset.apps/prometheus-lma-prometheus 1/1 13m
statefulset.apps/thanos-ruler 1/1 2m53s
statefulset.apps/thanos-storegateway 1/1 2m53s.png)
데이터를 확인해보면 prometheus에 잘 연결되어 돌아가는 것을 확인할 수 있다. (위 prometheus, 아래 thanos)
.png)
.png)
본 블로그에서는 다수의 prometheus 서버들을 통합하는 thanos에 대한 소개와 이를 실제로 작동가능하도록 설치해보는 내용을 다루었다. TACO에서는 kubernetes 서비스를 개발하면서 클러스터들을 통합모니터링 하기위해 thanos를 사용하고 있다. 이를 위한 개발을 진행하면서 다양하게 적용할 수 있는 thanos 컴포넌트들의 효율적인 설계를 위해 컴포넌트 상세를 조사하고 튜닝포인트를 잡아서 배포시 활용하는 작업을 수행하였다. 다음 블로그에서는 thanos의 컴포넌트별 상세를 살펴보고 적용하면 사용한 튜닝가능한 포인트들을 정리할 예정이다.
https://heavenly-part-d73.notion.site/Thanos-b07b40943e8e423696c47a64badcae61
DEVOTEE를 활성화 시키면
지금 작성한 댓글에 AI가 댓글을 달아줍니다.