상태: 사용되지 않음
이 문서는 사용되지 않으며 더 이상 유지되지 않습니다.
이유
TOBS 설치 프로그램이 상위 스트림에서 사용되지 않게 되었습니다.
대신 참조하세요
공식 TOBS 설명서를 참조하십시오.
소개
TOBS는 The Observability Stack의 약자로, 기존의 Kubernetes 클러스터에 설치할 수 있는 모니터링 도구와 대시보드 인터페이스의 사전 패키지 배포입니다. Prometheus와 Grafana를 기본으로 포함하여 Promlens, TimescaleDB, Alertmanager 등을 포함한 가장 인기있는 오픈 소스 관찰 도구 중 많은 도구들이 포함되어 있습니다. 이들은 함께 서버 트래픽을 분석하고 배포의 잠재적인 문제를 매우 큰 규모까지 식별하는 간단하고 유지 관리 가능한 솔루션을 제공합니다.
TOBS는 배포를 구성하고 업데이트하기 위해 표준 Kubernetes Helm 차트를 활용합니다. 그것은 어떤 Kubernetes 클러스터에도 설치할 수 있지만, 원격 노드가 아닌 로컬 머신에서 클러스터를 관리하기 위해 kubectl
를 실행하는 것이 효과적으로 시연될 수 있습니다. DigitalOcean의 Managed Kubernetes는 기본적으로 이와 유사한 구성을 제공할 것입니다. 이 튜토리얼에서는 기존의 Kubernetes 클러스터에 TOBS를 설치하고, 구성하고, 구성 요소 대시보드를 탐색하는 방법을 배우게 될 것입니다. 이 튜토리얼을 따르려면 다음이 필요합니다:
전제 조건
이 튜토리얼을 따르려면 다음이 필요합니다:
전제 조건
이 튜토리얼을 따르려면 다음이 필요합니다:
-
RBAC(역할 기반 액세스 제어)가 활성화된 Kubernetes 클러스터. 이 설정은 DigitalOcean Kubernetes 클러스터를 사용할 것이지만, 다른 방법으로 클러스터를 생성할 수도 있습니다. Kubernetes 버전은 지원되는 TOBS 버전과 일치해야 합니다.
-
로컬 머신에 설치되고 클러스터에 연결할 수 있도록 구성된
kubectl
명령줄 도구가 있어야 합니다.kubectl
을 설치하는 방법에 대한 자세한 내용은 공식 문서에서 확인할 수 있습니다. 만약 DigitalOcean Kubernetes 클러스터를 사용 중이라면,kubectl
을 사용하여 클러스터에 연결하는 방법에 대해 알아보기 위해 디지털오션 쿠버네티스 클러스터에 연결하는 방법을 참조하세요.
1단계 — 쿠버네티스 구성 확인
TOBS를 설치하려면 먼저 유효한 쿠버네티스 구성이 설정되어 있어야 하며, 이를 통해 워커 노드에 핑을 보낼 수 있어야 합니다. 이를 확인하려면 kubectl get nodes
를 실행하세요:
만약 kubectl
가 Kubernetes 클러스터에 연결할 수 있고 예상대로 작동 중이라면, 이 명령은 Ready
상태의 노드 목록을 반환합니다:
OutputNAME STATUS ROLES AGE VERSION
pool-uqv8a47h0-ul5a7 Ready <none> 22m v1.21.5
pool-uqv8a47h0-ul5am Ready <none> 21m v1.21.5
pool-uqv8a47h0-ul5aq Ready <none> 21m v1.21.5
이 성공적이라면, 단계 2로 진행할 수 있습니다. 그렇지 않으면, 구성 세부 정보를 검토하여 문제를 확인해야 합니다.
kubectl
은 기본적으로 환경을 이해하기 위해 ~/.kube/config
위치에 있는 파일을 찾습니다. 이 파일이 존재하고 유효한 YAML 구문을 포함하는지 확인하려면, 다음 명령을 실행할 수 있습니다:
OutputapiVersion: v1
clusters:
- cluster:
certificate-authority-data:
…
만약 파일이 존재하지 않는다면, Kubernetes를 구성한 동일한 사용자로 로그인되어 있는지 확인하십시오. ~/
경로는 개별 사용자의 홈 디렉토리를 나타내며, Kubernetes 구성은 기본적으로 사용자별로 저장됩니다.
만약 DigitalOcean의 관리형 Kubernetes를 사용하고 있다면, 클러스터를 설정한 후에 doctl kubernetes cluster kubeconfig save
명령을 실행하여 로컬 머신이 인증할 수 있도록 해야 합니다. 이렇게 하면 ~/.kube/config
파일이 생성됩니다:
이 머신을 사용하여 여러 클러스터에 액세스하는 경우, 충돌을 피하기 위해 환경 변수 및 여러 구성 파일을 사용하는 방법에 대해 Kubernetes 문서를 검토해야 합니다. kubectl
환경을 구성한 후에 다음 단계에서 TOBS를 설치할 수 있습니다.
단계 2 — TOBS 설치 및 엔드포인트 테스트
TOBS에는 다음 구성 요소가 포함되어 있습니다:
- Prometheus은 메트릭 엔드포인트를 폴링하고 이러한 엔드포인트에서 노출된 데이터를 스크랩하고 처리하여 작동하는 시계열 데이터베이스 및 모니터링 도구입니다. 이를 사용하여 PromQL이라는 시계열 데이터 쿼리 언어를 사용하여이 데이터를 쿼리할 수 있습니다.
- Alertmanager는 일반적으로 Prometheus와 함께 배포되며 스택의 경보 계층을 형성하여 Prometheus에서 생성된 경보를 처리하고 중복 처리하고 그룹화하여 이메일 또는 PagerDuty와 같은 통합에 경로를 지정합니다. Alertmanager에 대해 자세히 알아보려면 경고에 관한 Prometheus 설명서를 참조하십시오.
- Grafana는 메트릭 데이터에 대한 대시보드와 그래프를 구축할 수 있는 데이터 시각화 및 분석 도구입니다.
- kube-state-metrics는 Kubernetes API 서버를 수신 대기하고 배포 및 파드와 같은 Kubernetes 객체의 상태에 대한 메트릭을 생성하는 추가 에이전트입니다. 이러한 메트릭은 HTTP 엔드포인트에서 평문으로 제공되며 Prometheus에서 소비됩니다.
- 마지막으로 노드 익스포터는 클러스터 노드에서 실행되며 CPU 및 메모리 사용량과 같은 OS 및 하드웨어 메트릭을 프로메테우스에 제공하는 프로메테우스 익스포터입니다. 이러한 메트릭은 또한 HTTP 엔드포인트에서 플레인 텍스트로 제공되어 프로메테우스에서 사용됩니다.
TOBS를 설치하려면 먼저 제어 평면에 TOBS 설치 프로그램을 실행해야 합니다. 이렇게 하면 tobs
명령과 구성 디렉터리가 설정됩니다. 전제 조건에서 언급했듯이 tobs
명령은 리눅스/macOS/BSD 시스템(공식 Kubernetes 이진 파일과 같은)에서만 작동하도록 설계되었으므로 지금까지 Windows를 사용했다면 Windows Subsystem for Linux 환경에서 작업해야 합니다.
TOBS 설치 프로그램을 검색하고 실행하세요:
Outputtobs 0.7.0 was successfully installed ?
Binary is available at /root/.local/bin/tobs.
이제 TOBS를 쿠버네티스 클러스터에 푸시할 수 있습니다. 이는 새로 제공된 tobs
명령을 사용하여 한 줄로 수행됩니다:
이 작업은 몇 줄의 출력을 생성하며 시간이 걸릴 수 있습니다. Kubernetes의 정확한 버전에 따라 출력에 여러 경고가 표시될 수 있지만 Welcome to tobs
메시지를 최종적으로 받으면 무시할 수 있습니다:
OutputWARNING: Using a generated self-signed certificate for TLS access to TimescaleDB.
This should only be used for development and demonstration purposes.
To use a signed certificate, use the "--tls-timescaledb-cert" and "--tls-timescaledb-key"
flags when issuing the tobs install command.
Creating TimescaleDB tobs-certificate secret
Creating TimescaleDB tobs-credentials secret
skipping to create TimescaleDB s3 backup secret as backup option is disabled.
2022/01/10 11:25:34 Transport: unhandled response frame type *http.http2UnknownFrame
2022/01/10 11:25:35 Transport: unhandled response frame type *http.http2UnknownFrame
2022/01/10 11:25:35 Transport: unhandled response frame type *http.http2UnknownFrame
Installing The Observability Stack
2022/01/10 11:25:37 Transport: unhandled response frame type *http.http2UnknownFrame
W0110 11:25:55.438728 75479 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+
W0110 11:25:55.646392 75479 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+
…
?? Welcome to tobs, The Observability Stack for Kubernetes
…
이 시점 이후의 출력에는 브라우저에서 Prometheus, TimescaleDB, PromLens 및 Grafana의 웹 엔드포인트에 연결하는 방법에 대한 지침이 포함됩니다. 참고를 위해 아래에 전체로 재생산되었습니다:
Output###############################################################################
? PROMETHEUS NOTES:
###############################################################################
Prometheus can be accessed via port 9090 on the following DNS name from within your cluster:
tobs-kube-prometheus-prometheus.default.svc.cluster.local
Get the Prometheus server URL by running these commands in the same shell:
tobs prometheus port-forward
The Prometheus alertmanager can be accessed via port 9093 on the following DNS name from within your cluster:
tobs-kube-prometheus-alertmanager.default.svc.cluster.local
Get the Alertmanager URL by running these commands in the same shell:
export POD_NAME=$(kubectl get pods --namespace default -l "app=alertmanager,alertmanager=tobs-kube-prometheus-alertmanager" -o jsonpath="{.items[0].metadata.name}")
kubectl --namespace default port-forward $POD_NAME 9093
WARNING! Persistence is disabled on AlertManager.
You will lose your data when the AlertManager pod is terminated.
###############################################################################
? TIMESCALEDB NOTES:
###############################################################################
TimescaleDB can be accessed via port 5432 on the following DNS name from within your cluster:
tobs.default.svc.cluster.local
To get your password for superuser run:
tobs timescaledb get-password -U <user>
To connect to your database, chose one of these options:
1. Run a postgres pod and connect using the psql cli:
tobs timescaledb connect -U <user>
2. Directly execute a psql session on the master node
tobs timescaledb connect -m
###############################################################################
? PROMLENS NOTES:
###############################################################################
PromLens is a PromQL query builder, analyzer, and visualizer.
You can access PromLens via a local browser by executing:
tobs promlens port-forward
Then you can point your browser to http://127.0.0.1:8081/.
###############################################################################
? GRAFANA NOTES:
###############################################################################
1. The Grafana server can be accessed via port 80 on
the following DNS name from within your cluster:
tobs-grafana.default.svc.cluster.local
You can access grafana locally by executing:
tobs grafana port-forward
Then you can point your browser to http://127.0.0.1:8080/.
2. The 'admin' user password can be retrieved by:
tobs grafana get-password
3. You can reset the admin user password with grafana-cli from inside the pod.
tobs grafana change-password <password-you-want-to-set>
각각의 워커 노드에서 액세스할 수 있도록 클러스터 내부 DNS 이름이 제공됩니다. 예를 들어 프로메테우스의 경우 tobs-kube-prometheus-alertmanager.default.svc.cluster.local
와 같습니다. 또한 로컬 웹 브라우저에서 액세스할 수 있도록 각각에 대한 포트 포워딩 명령이 구성되어 있습니다.
새 터미널에서 tobs prometheus port-forward
명령을 실행하세요:
포트 포워딩 프로세스가 활성화되어 있는 동안에만 이 작업이 실행됩니다. 포트 포워딩을 중지하려면 Ctrl+C
를 누르세요. 그런 다음 웹 브라우저에서 http://127.0.0.1:9090/
으로 이동하세요. 클러스터에서 메트릭을 생성하는 완전한 프로메테우스 인터페이스가 표시됩니다:
그라파나에 대해서도 동일한 작업을 수행할 수 있습니다. 포트 포워딩이 다른 프로세스에서 활성화된 경우에만 http://127.0.0.1:8080/
에서 접근할 수 있습니다. 먼저 설치 프로그램 출력에서 제공되는 get-password
명령을 사용해야 합니다:
Outputyour-grafana-password
그런 다음 이 비밀번호를 사용하여 포트 포워딩 명령을 실행하고 브라우저에서 http://127.0.0.1:8080/
을 열어 그라파나 인터페이스에 로그인할 수 있습니다.
이제 쿠버네티스 클러스터에서 작동하는 TOBS 스택이 준비되었습니다. 각 구성 요소의 문서를 참조하여 해당 기능을 학습할 수 있습니다. 이 튜토리얼의 마지막 단계에서는 TOBS 구성 자체를 업데이트하는 방법을 배우게 됩니다.
단계 3 — TOBS 구성 편집 및 업그레이드
TOBS의 구성에는 스택 내 개별 애플리케이션에 대한 일부 매개변수와 TOBS 배포 자체에 대한 일부 매개변수가 포함되어 있습니다. 이는 Kubernetes Helm 차트로 생성되고 저장됩니다. 현재 구성을 출력하려면 tobs helm show-values
를 실행하여 할 수 있습니다. 그러나 이는 터미널에 전체 긴 구성을 출력하므로 읽기 어려울 수 있습니다. 대신 Helm 차트는 모두 유효한 YAML 구문이므로 출력을 .yaml
확장자가 있는 파일로 리디렉션할 수 있습니다:
파일 내용은 다음과 같습니다:
2022/01/10 11:56:37 Transport: unhandled response frame type *http.http2UnknownFrame
# TimescaleDB 배포를 구성하는 값
# 차트의 README 위치:
# https://github.com/timescale/timescaledb-kubernetes/tree/master/charts/timescaledb-single
# 다양한 구성 옵션을 확인하려면(관리 가이드) 여기를 확인하세요:
# https://github.com/timescale/timescaledb-kubernetes/blob/master/charts/timescaledb-single/admin-guide.md
cli: false
# 배포 네임스페이스를 재정의합니다
namespaceOverride: ""
…
TOBS의 구성에 대한 추가 매개변수를 검토하려면 TOBS 문서를 읽어보세요
이 파일을 수정하여 배포를 업데이트하려면 업데이트된 구성을 사용하여 TOBS를 다시 설치할 수 있습니다. YAML 파일을 추가 인수로 tobs install
명령에 -f
옵션을 전달하면 됩니다:
마침내 다음 명령으로 TOBS를 업그레이드할 수 있습니다:
이는 최신 업스트림 차트를 가져와 helm upgrade
의 동등한 작업을 수행합니다.
결론
이 튜토리얼에서는 기존 Kubernetes 클러스터에 TOBS, The Observability Stack을 배포하고 구성하는 방법을 배웠습니다. TOBS는 각 앱의 구성 세부 정보를 개별적으로 유지할 필요를 없애면서 클러스터에서 실행 중인 애플리케이션에 대한 표준 모니터링을 제공하는 데 특히 유용합니다.
다음으로 Kubernetes 클러스터에 HTTPS 인그레스를 처리하기 위해 Cert-Manager를 사용하는 방법을 배우고 싶을 것입니다.