인포레터에서 최신 DevOps 트렌드를 격주로 만나보세요!
클러스터 모니터링
Teleport는 건강 상태를 확인하고 트래픽을 처리할 준비가 되었는지를 확인하기 위한 건강 검사 메커니즘을 제공합니다.
성능, 추적 및 프로파일링은 클러스터 성능 및 반응성을 추적하는 심층 데이터를 제공합니다.
건강 모니터링 활성화
Teleport 인스턴스의 건강을 모니터링하는 방법입니다.
Teleport의 진단 HTTP 엔드포인트는 기본적으로 비활성화되어 있습니다. 이를 활성화하려면 다음 방법을 사용하십시오:
--diag-addr 플래그가 설치된 로컬 주소로 teleport 인스턴스를 시작하여 진단 엔드포인트가 수신 대기하게 설정합니다:
sudo teleport start --diag-addr=127.0.0.1:3000
teleport 인스턴스의 구성 파일(기본적으로 /etc/teleport.yaml )을 편집하여 다음 내용을 포함하십시오:
teleport:
diag_addr: 127.0.0.1:3000
디버그 로그를 활성화하려면:
log:
severity: DEBUG
Teleport가 이제 진단 엔드포인트를 제공하는지 확인하십시오:
curl http://127.0.0.1:3000/healthz
이제 여러 엔드포인트에서 모니터링 정보를 수집할 수 있습니다. 이러한 정보는
Kubernetes 프로브와 같은 것들에 의해 Teleport 프로세스의 건강을 모니터링하는 데 사용될 수 있습니다.
/healthz
http://127.0.0.1:3000/healthz 엔드포인트는 프로세스가 실행 중인 경우
{"status":"ok"}의 본문과 HTTP 200 OK 상태 코드를 응답합니다.
이는 Teleport 프로세스가 여전히 실행 중인지 판단하기에 적합한 간단한 확인입니다.
/readyz
http://127.0.0.1:3000/readyz 엔드포인트는 /healthz 와 유사하지만,
응답에는 프로세스의 상태에 대한 정보가 포함되어 있습니다.
응답 본문은 다음 형태의 JSON 객체입니다:
{ "status": "여기에 상태 메시지를 입력하세요"}
/readyz 와 하트비트
Teleport 구성 요소가 하트비트 절차를 실행하지 못하면
퇴화 상태에 들어갑니다. 하트비트가 성공적으로 완료되면 Teleport는 이 상태에서 복구를 시작합니다.
첫 번째 성공적인 하트비트가 Teleport를 복구 상태로 전환합니다. 두 번째 연속
성공적인 하트비트가 Teleport를 OK 상태로 전환합니다.
Teleport 하트비트는 건강할 때마다 약 60초마다 실행되며, 실패한
하트비트는 약 5초마다 재시도됩니다. 이는 하트비트의 타이밍에 따라
연결이 복원된 후 /readyz 가 다시 건강하다고 보고하기 시작하는 데 최대 60-70초가 걸릴 수 있음을 의미합니다.
상태 코드
응답의 상태 코드는 다음 중 하나일 수 있습니다:
- HTTP 200 OK: Teleport가 정상적으로 작동하고 있습니다.
- HTTP 503 서비스 이용 불가: Teleport가 연결 오류에 직면하여
퇴화 상태로 실행되고 있습니다. 이는 Teleport 하트비트가 실패할 때 발생합니다. - HTTP 400 잘못된 요청: Teleport가 초기 시작 단계에 들어가고 있거나
퇴화 상태에서 복구를 시작하고 있습니다.
동일한 상태 정보는 /metrics 엔드포인트 아래의 process_state 메트릭에서도 제공됩니다.
메트릭
Teleport는 모든 구성 요소에 대한 메트릭을 노출하여
클러스터 상태에 대한 통찰력을 제공합니다. 이 가이드는 Teleport 클러스터에서 수집할 수 있는 메트릭을 설명합니다.
메트릭 활성화
Teleport의 진단 HTTP 엔드포인트는 기본적으로 비활성화되어 있습니다. 이를 활성화하려면 다음 방법을 사용하십시오:
--diag-addr 플래그가 설치된 로컬 주소로 teleport 인스턴스를 시작하여 진단 엔드포인트가 수신 대기하게 설정합니다:
sudo teleport start --diag-addr=127.0.0.1:3000
teleport 인스턴스의 구성 파일(기본적으로 /etc/teleport.yaml )을 편집하여 다음 내용을 포함하십시오:
teleport:
diag_addr: 127.0.0.1:3000
디버그 로그를 활성화하려면:
log:
severity: DEBUG
Teleport가 이제 진단 엔드포인트를 제공하는지 확인하십시오:
curl http://127.0.0.1:3000/healthz
이를 통해 Teleport가 추적하는 메트릭을 제공하는
http://127.0.0.1:3000/metrics 엔드포인트를 활성화 할 수 있습니다. 이는
Prometheus 수집기와 호환됩니다.
이용 가능한 메트릭은 다음과 같습니다:
Teleport Cloud는 Auth 서비스 및 Proxy 서비스에 대한 모니터링 엔드포인트를 노출하지 않습니다.
인증 서비스 및 백엔드
| 이름 | 유형 | 구성 요소 | 설명 |
|---|---|---|---|
audit_failed_disk_monitoring | 카운터 | Teleport 감사 로그 | 디스크 모니터링 실패 횟수. |
audit_failed_emit_events | 카운터 | Teleport 감사 로그 | 감사 이벤트 방출 실패 횟수. |
audit_percentage_disk_space_used | 게이지 | Teleport 감사 로그 | 사용된 디스크 공간의 비율. |
audit_server_open_files | 게이지 | Teleport 감사 로그 | 열린 감사 파일의 수. |
auth_generate_requests_throttled_total | 카운터 | Teleport 인증 | 새 서버 키를 생성하기 위한 제한된 요청의 수. |
auth_generate_requests_total | 카운터 | Teleport 인증 | 새 서버 키를 생성하기 위한 요청의 수. |
auth_generate_requests | 게이지 | Teleport 인증 | 현재 생성 요청의 수. |
auth_generate_seconds | 히스토그램 | Teleport 인증 | 생성 요청의 지연 시간. |
backend_batch_read_requests_total | 카운터 | 캐시 | 백엔드에 대한 읽기 요청의 수. |
backend_batch_read_seconds | 히스토그램 | 캐시 | 배치 읽기 작업에 대한 지연 시간. |
backend_batch_write_requests_total | 카운터 | 캐시 | 백엔드에 대한 배치 쓰기 요청의 수. |
backend_batch_write_seconds | 히스토그램 | 캐시 | 백엔드 배치 쓰기 작업에 대한 지연 시간. |
backend_read_requests_total | 카운터 | 캐시 | 백엔드에 대한 읽기 요청의 수. |
backend_read_seconds | 히스토그램 | 캐시 | 읽기 작업에 대한 지연 시간. |
backend_requests | 카운터 | 캐시 | 백엔드에 대한 요청 수 (읽기, 쓰기 및 유지 관리). |
backend_write_requests_total | 카운터 | 캐시 | 백엔드에 대한 쓰기 요청의 수. |
backend_write_seconds | 히스토그램 | 캐시 | 백엔드 쓰기 작업에 대한 지연 시간. |
cluster_name_not_found_total | 카운터 | Teleport 인증 | 클러스터를 찾을 수 없었던 횟수. |
dynamo_requests_total | 카운터 | DynamoDB | DynamoDB API에 대한 요청의 총 수. |
dynamo_requests | 카운터 | DynamoDB | 결과별로 그룹화된 DynamoDB API에 대한 요청의 총 수. |
dynamo_requests_seconds | 히스토그램 | DynamoDB | DynamoDB API 요청의 지연 시간. |
etcd_backend_batch_read_requests | 카운터 | etcd | etcd 데이터베이스에 대한 읽기 요청의 수. |
etcd_backend_batch_read_seconds | 히스토그램 | etcd | etcd 읽기 작업에 대한 지연 시간. |
etcd_backend_read_requests | 카운터 | etcd | etcd 데이터베이스에 대한 읽기 요청의 수. |
etcd_backend_read_seconds | 히스토그램 | etcd | etcd 읽기 작업에 대한 지연 시간. |
etcd_backend_tx_requests | 카운터 | etcd | 데이터베이스에 대한 트랜잭션 요청의 수. |
etcd_backend_tx_seconds | 히스토그램 | etcd | etcd 트랜잭션 작업에 대한 지연 시간. |
etcd_backend_write_requests | 카운터 | etcd | 데이터베이스에 대한 쓰기 요청의 수. |
etcd_backend_write_seconds | 히스토그램 | etcd | etcd 쓰기 작업에 대한 지연 시간. |
teleport_etcd_events | 카운터 | etcd | 처리된 etcd 이벤트의 총 수. |
teleport_etcd_event_backpressure | 카운터 | etcd | 이벤트 처리 중에 역압을 경험한 총 횟수. |
firestore_events_backend_batch_read_requests | 카운터 | GCP Cloud Firestore | Cloud Firestore 이벤트에 대한 배치 읽기 요청의 수. |
firestore_events_backend_batch_read_seconds | 히스토그램 | GCP Cloud Firestore | Cloud Firestore 이벤트 배치 읽기 작업에 대한 지연 시간. |
firestore_events_backend_batch_write_requests | 카운터 | GCP Cloud Firestore | Cloud Firestore 이벤트에 대한 배치 쓰기 요청의 수. |
firestore_events_backend_batch_write_seconds | 히스토그램 | GCP Cloud Firestore | Cloud Firestore 이벤트 배치 쓰기 작업에 대한 지연 시간. |
firestore_events_backend_write_requests | 카운터 | GCP Cloud Firestore | Cloud Firestore 이벤트에 대한 쓰기 요청의 수. |
firestore_events_backend_write_seconds | 히스토그램 | GCP Cloud Firestore | Cloud Firestore 이벤트 쓰기 작업에 대한 지연 시간. |
gcs_event_storage_downloads_seconds | 히스토그램 | GCP GCS | GCS 다운로드 작업에 대한 지연 시간. |
gcs_event_storage_downloads | 카운터 | GCP GCS | GCS 백엔드에서의 다운로드 수. |
gcs_event_storage_uploads_seconds | 히스토그램 | GCP GCS | GCS 업로드 작업에 대한 지연 시간. |
gcs_event_storage_uploads | 카운터 | GCP GCS | GCS 백엔드에 대한 업로드 수. |
grpc_server_started_total | 카운터 | Teleport 인증 | 서버에서 시작된 총 RPC 수. |
grpc_server_handled_total | 카운터 | Teleport 인증 | 성공 여부와 관계없이 서버에서 완료된 총 RPC 수. |
grpc_server_msg_received_total | 카운터 | Teleport 인증 | 서버에서 수신된 총 RPC 스트림 메시지 수. |
grpc_server_msg_sent_total | 카운터 | Teleport 인증 | 서버에서 전송한 총 gRPC 스트림 메시지 수. |
heartbeat_connections_received_total | 카운터 | Teleport 인증 | 인증 서비스가 하트비트 연결을 수신한 횟수, 총 하트비팅 에이전트를 나타냅니다. |
s3_requests_total | 카운터 | Amazon S3 | S3 API에 대한 요청의 총 수. |
s3_requests | 카운터 | Amazon S3 | 결과별로 그룹화된 S3 API에 대한 요청의 총 수. |
s3_requests_seconds | 히스토그램 | Amazon S3 | S3 API에 대한 요청 지연 시간. |
teleport_audit_emit_events | 카운터 | Teleport 감사 로그 | 방출된 감사 이벤트의 수. |
teleport_audit_parquetlog_batch_processing_seconds | 히스토그램 | Teleport 감사 로그 | Parquet 형식의 감사 로그에서 단일 이벤트 배치를 처리하는 데 걸린 시간. |
teleport_audit_parquetlog_s3_flush_seconds | 히스토그램 | Teleport 감사 로그 | Parquet 형식의 감사 로그에서 S3로 파켓 파일을 플러시하는 데 걸린 시간. |
teleport_audit_parquetlog_delete_events_seconds | 히스토그램 | Teleport 감사 로그 | Parquet 형식의 감사 로그에서 SQS로부터 이벤트를 삭제하는 데 걸린 시간. |
teleport_audit_parquetlog_batch_size | 히스토그램 | Teleport 감사 로그 | Parquet 형식의 감사 로그에서 단일 배치의 이벤트 전체 크기. |
teleport_audit_parquetlog_batch_count | 카운터 | Teleport 감사 로그 | Parquet 형식의 감사 로그에서 단일 배치의 총 이벤트 수. |
teleport_audit_parquetlog_last_processed_timestamp | 게이지 | Teleport 감사 로그 | Parquet 형식의 감사 로그에서 마지막 처리 시간의 수. |
teleport_audit_parquetlog_age_oldest_processed_message | 게이지 | Teleport 감사 로그 | Parquet 형식의 감사 로그에서 가장 오래된 이벤트의 나이. |
teleport_audit_parquetlog_errors_from_collect_count | 카운터 | Teleport 감사 로그 | Parquet 형식의 감사 로그에서 수집 실패의 수. |
teleport_connected_resources | 게이지 | Teleport 인증 | 유지 관리 연결을 통해 연결된 리소스의 수와 유형. |
teleport_postgres_events_backend_write_requests | 카운터 | Postgres (이벤트) | 요청 상태 (성공 또는 실패)로 레이블이 지정된 postgres 이벤트에 대한 쓰기 요청의 수. |
teleport_postgres_events_backend_batch_read_requests | 카운터 | Postgres (이벤트) | 요청 상태 (성공 또는 실패)로 레이블이 지정된 postgres 이벤트에 대한 배치 읽기 요청의 수. |
teleport_postgres_events_backend_batch_delete_requests | 카운터 | Postgres (이벤트) | 요청 상태 (성공 또는 실패)로 레이블이 지정된 postgres 이벤트에 대한 배치 삭제 요청의 수. |
teleport_postgres_events_backend_write_seconds | 히스토그램 | Postgres (이벤트) | postgres 이벤트 쓰기 작업에 대한 지연 시간, 초 단위. |
teleport_postgres_events_backend_batch_read_seconds | 히스토그램 | Postgres (이벤트) | postgres 이벤트 배치 읽기 작업에 대한 지연 시간, 초 단위. |
teleport_postgres_events_backend_batch_delete_seconds | 히스토그램 | Postgres (이벤트) | postgres 이벤트 배치 삭제 작업에 대한 지연 시간, 초 단위. |
teleport_registered_servers | 게이지 | Teleport 인증 | 특정 Auth Service 인스턴스에 연결된 Teleport 서비스의 수 (버전별로 그룹화됨). |
teleport_registered_servers_by_install_methods | 게이지 | Teleport 인증 | 특정 Auth Service 인스턴스에 연결된 Teleport 서비스의 수 (설치 방법별로 그룹화됨). |
teleport_roles_total | 게이지 | Teleport 인증 | 클러스터에 존재하는 역할의 수. |
teleport_migrations | 게이지 | Teleport 인증 | 각 마이그레이션이 활성 상태인지 (1) 아니면 비활성 상태인지 (0) 추적합니다. |
user_login_total | 카운터 | Teleport 인증 | 사용자 로그인 수. |
watcher_event_sizes | 히스토그램 | 캐시 | 방출된 이벤트의 전체 크기. |
watcher_events | 히스토그램 | 캐시 | 방출된 이벤트의 자원별 크기. |
향상된 세션 녹화 / BPF
| 이름 | 유형 | 구성 요소 | 설명 |
|---|---|---|---|
bpf_lost_command_events | 카운터 | BPF | 손실된 명령 이벤트 수. |
bpf_lost_disk_events | 카운터 | BPF | 손실된 디스크 이벤트 수. |
bpf_lost_network_events | 카운터 | BPF | 손실된 네트워크 이벤트 수. |
프록시 서비스
| 이름 | 유형 | 구성 요소 | 설명 |
|---|---|---|---|
failed_connect_to_node_attempts_total | 카운터 | Teleport Proxy | SSH 서비스에 대한 SSH 연결 시도 중 실패한 수. teleport_connect_to_node_attempts_total 와 함께 사용하여 실패 비율을 확인할 수 있습니다. |
failed_login_attempts_total | 카운터 | Teleport Proxy | 실패한 tsh login 또는 tsh ssh 로그인 수. |
grpc_client_started_total | 카운터 | Teleport Proxy | 클라이언트에서 시작된 RPC 총 수. |
grpc_client_handled_total | 카운터 | Teleport Proxy | 클라이언트에서 완료된 RPC 총 수(성공 여부와 상관없이). |
grpc_client_msg_received_total | 카운터 | Teleport Proxy | 클라이언트에서 수신된 RPC 스트림 메시지 총 수. |
grpc_client_msg_sent_total | 카운터 | Teleport Proxy | 클라이언트에서 전송된 gRPC 스트림 메시지 총 수. |
proxy_connection_limit_exceeded_total | 카운터 | Teleport Proxy | 프록시 서비스 연결 한도를 초과한 연결 수. |
proxy_peer_client_dial_error_total | 카운터 | Teleport Proxy | 피어 프록시 서비스 인스턴스를 다이얼할 때 발생한 오류 총 수. |
proxy_peer_server_connections | 게이지 | Teleport Proxy | 피어 프록시 서비스 인스턴스에 현재 열려 있는 연결 수. |
proxy_peer_client_rpc | 게이지 | Teleport Proxy | 현재 클라이언트 RPC 요청 수. |
proxy_peer_client_rpc_total | 카운터 | Teleport Proxy | 총 클라이언트 RPC 요청 수. |
proxy_peer_client_rpc_duration_seconds | 히스토그램 | Teleport Proxy | 클라이언트에서 전송된 RPC의 지속 시간(초). |
proxy_peer_client_message_sent_size | 히스토그램 | Teleport Proxy | 클라이언트에서 전송된 메시지 크기. |
proxy_peer_client_message_received_size | 히스토그램 | Teleport Proxy | 클라이언트에서 수신된 메시지 크기. |
proxy_peer_server_connections | 게이지 | Teleport Proxy | 피어 프록시 서비스 클라이언트에 현재 열려 있는 연결 수. |
proxy_peer_server_rpc | 게이지 | Teleport Proxy | 현재 서버 RPC 요청 수. |
proxy_peer_server_rpc_total | 카운터 | Teleport Proxy | 총 서버 RPC 요청 수. |
proxy_peer_server_rpc_duration_seconds | 히스토그램 | Teleport Proxy | 서버에서 전송된 RPC의 지속 시간(초). |
proxy_peer_server_message_sent_size | 히스토그램 | Teleport Proxy | 서버에서 전송된 메시지 크기. |
proxy_peer_server_message_received_size | 히스토그램 | Teleport Proxy | 서버에서 수신된 메시지 크기. |
proxy_ssh_sessions_total | 게이지 | Teleport Proxy | 이 프록시 서비스 인스턴스를 통한 활성 세션 수. |
proxy_missing_ssh_tunnels | 게이지 | Teleport Proxy | 누락된 SSH 터널 수. Teleport 인스턴스가 모든 프록시 서비스 인스턴스를 발견했는지 디버깅하는 데 사용됩니다. |
remote_clusters | 게이지 | Teleport Proxy | 리프 클러스터로부터의 인바운드 연결 수. |
teleport_connect_to_node_attempts_total | 카운터 | Teleport Proxy | SSH 서비스에 대한 SSH 연결 시도 수. failed_connect_to_node_attempts_total 와 함께 사용하여 실패 비율을 확인할 수 있습니다. |
teleport_reverse_tunnels_connected | 게이지 | Teleport Proxy | Teleport 인스턴스에 의해 Teleport 프록시 서비스에 연결된 리버스 SSH 터널 수. |
teleport_proxy_db_connection_setup_time_seconds | 히스토그램 | Teleport Proxy | 프록시 서비스에서 DB 서비스에 연결하는 데 걸리는 시간. |
teleport_proxy_db_connection_dial_attempts_total | 카운터 | Teleport Proxy | 프록시에서 DB 서비스로의 다이얼 시도의 수. |
teleport_proxy_db_connection_dial_failures_total | 카운터 | Teleport Proxy | 프록시에서 DB 서비스로의 다이얼 시도 중 실패한 수. |
teleport_proxy_db_attempted_servers_total | 히스토그램 | Teleport Proxy | 프록시 서비스에서 DB 서비스에 대한 연결 시도 중 처리된 서버 수. |
teleport_proxy_db_connection_tls_config_time_seconds | 히스토그램 | Teleport Proxy | 프록시 서비스에서 DB 서비스에 대한 연결을 위한 TLS 구성 정보를 가져오는 데 걸리는 시간. |
teleport_proxy_db_active_connections_total | 게이지 | Teleport Proxy | 현재 프록시 서비스에서 DB 서비스에 대한 활성 연결 수. |
trusted_clusters | 게이지 | Teleport Proxy | 리프 클러스터에 대한 아웃바운드 연결 수. |
데이터베이스 서비스
| 이름 | 유형 | 구성 요소 | 설명 |
|---|---|---|---|
teleport_db_messages_from_client_total | 카운터 | Teleport 데이터베이스 서비스 | DB 클라이언트로부터 수신된 메시지(패킷)의 수. |
teleport_db_messages_from_server_total | 카운터 | Teleport 데이터베이스 서비스 | DB 서버로부터 수신된 메시지(패킷)의 수. |
teleport_db_method_call_count_total | 카운터 | Teleport 데이터베이스 서비스 | DB 메서드가 호출된 횟수. |
teleport_db_method_call_latency_seconds | 히스토그램 | Teleport 데이터베이스 서비스 | DB 메서드 호출에 대한 대기 시간. |
teleport_db_initialized_connections_total | 카운터 | Teleport 데이터베이스 서비스 | 초기화된 DB 연결의 수. |
teleport_db_active_connections_total | 게이지 | Teleport 데이터베이스 서비스 | 활성 DB 연결의 수. |
teleport_db_connection_durations_seconds | 히스토그램 | Teleport 데이터베이스 서비스 | DB 연결의 지속 시간. |
teleport_db_connection_setup_time_seconds | 히스토그램 | Teleport 데이터베이스 서비스 | 요청을 처리하기 전에 DB 연결을 설정하는 초기 시간. |
teleport_db_errors_total | 카운터 | Teleport 데이터베이스 서비스 | 클라이언트에 전송된 합성 DB 오류의 수. |
Kubernetes 접근
다음 표는 Kubernetes 접근이 활성화된 경우 프록시 서비스에서 사용할 수 있는 모든 메트릭을 식별합니다.
클라이언트
다음 표는 서비스가 업스트림 서버에 연결할 때 사용할 수 있는 모든 메트릭을 식별합니다. proxy 의 경우, 업스트림 서버는 kubernetes_service 또는 레거시 모드에서 실행되는 Kubernetes 클러스터가 될 수 있습니다.
| 이름 | 유형 | 구성 요소 | 설명 |
|---|---|---|---|
teleport_kubernetes_client_in_flight_requests | 게이지 | Teleport Kubernetes Proxy | 업스트림 응답을 기다리는 진행 중인 요청. |
teleport_kubernetes_client_requests_total | 카운터 | Teleport Kubernetes Proxy | 업스트림 Teleport 프록시, kube_service 또는 Kubernetes 클러스터 서버로 전송된 요청의 총 수. |
teleport_kubernetes_client_tls_duration_seconds | 히스토그램 | Teleport Kubernetes Proxy | TLS 핸드셰이크의 대기 시간 분포. |
teleport_kubernetes_client_got_conn_duration_seconds | 히스토그램 | Teleport Kubernetes Proxy | 업스트림 서버에 전화하는 데 걸리는 시간의 대기 시간 분포 - 리버스 터널 또는 직접 다이얼링 사용. |
teleport_kubernetes_client_first_byte_response_duration_seconds | 히스토그램 | Teleport Kubernetes Proxy | 업스트림 서버로부터 첫 번째 응답 바이트를 받는 데 걸리는 시간의 대기 시간 분포. |
teleport_kubernetes_client_request_duration_seconds | 히스토그램 | Teleport Kubernetes Proxy | 업스트림 요청 시간에 대한 대기 시간 분포. |
서버
다음 표는 들어오는 연결에 대해 사용 가능한 모든 메트릭을 식별합니다.
| 이름 | 유형 | 구성 요소 | 설명 |
|---|---|---|---|
teleport_kubernetes_server_in_flight_requests | 게이지 | Teleport Kubernetes Proxy | 서버에서 현재 처리 중인 진행 중인 요청. |
teleport_kubernetes_server_api_requests_total | 카운터 | Teleport Kubernetes Proxy | 서버에서 처리한 요청의 총 수. |
teleport_kubernetes_server_request_duration_seconds | 히스토그램 | Teleport Kubernetes Proxy | 전체 요청 시간에 대한 대기 시간 분포. |
teleport_kubernetes_server_response_size_bytes | 히스토그램 | Teleport Kubernetes Proxy | 응답 크기의 분포. |
teleport_kubernetes_server_exec_in_flight_sessions | 게이지 | Teleport Kubernetes Proxy | 활성 kubectl exec 세션의 수. |
teleport_kubernetes_server_exec_sessions_total | 카운터 | Teleport Kubernetes Proxy | 총 kubectl exec 세션의 수. |
teleport_kubernetes_server_portforward_in_flight_sessions | 게이지 | Teleport Kubernetes Proxy | 활성 kubectl portforward 세션의 수. |
teleport_kubernetes_server_portforward_sessions_total | 카운터 | Teleport Kubernetes Proxy | 총 활성 kubectl portforward 세션의 수. |
teleport_kubernetes_server_join_in_flight_sessions | 게이지 | Teleport Kubernetes Proxy | 활성 조인 세션의 수. |
teleport_kubernetes_server_join_sessions_total | 카운터 | Teleport Kubernetes Proxy | 총 조인 세션의 수. |
Teleport SSH 서비스
| 이름 | 유형 | 구성 요소 | 설명 |
|---|---|---|---|
user_max_concurrent_sessions_hit_total | 카운터 | Teleport SSH | 사용자가 동시 세션 한도를 초과한 횟수입니다. |
Teleport Kubernetes 서비스
다음 표는 서비스가 업스트림 서버에 연결될 때 사용 가능한 모든 메트릭을 식별합니다. kubernetes_service 의 경우, 업스트림 서버는 항상 Kubernetes 클러스터입니다.
| 이름 | 유형 | 구성 요소 | 설명 |
|---|---|---|---|
teleport_kubernetes_client_in_flight_requests | 게이지 | Teleport Kubernetes Service | 업스트림 응답을 기다리는 진행 중인 요청입니다. |
teleport_kubernetes_client_requests_total | 카운터 | Teleport Kubernetes Service | 업스트림 teleport 프록시, kube_service 또는 Kubernetes 클러스터 서버에 보낸 총 요청 수입니다. |
teleport_kubernetes_client_tls_duration_seconds | 히스토그램 | Teleport Kubernetes Service | TLS 핸드셰이크의 지연 분포입니다. |
teleport_kubernetes_client_got_conn_duration_seconds | 히스토그램 | Teleport Kubernetes Service | 업스트림 서버에 다이얼링하는 데 걸리는 시간의 지연 분포 - 리버스 터널 또는 직접 다이얼러를 사용합니다. |
teleport_kubernetes_client_first_byte_response_duration_seconds | 히스토그램 | Teleport Kubernetes Service | 업스트림 서버로부터 첫 번째 응답 바이트를 받는 데 걸리는 시간의 지연 분포입니다. |
teleport_kubernetes_client_request_duration_seconds | 히스토그램 | Teleport Kubernetes Service | 업스트림 요청 시간의 지연 분포입니다. |
다음 표는 들어오는 연결에 대해 사용 가능한 모든 메트릭을 식별합니다.
| 이름 | 유형 | 구성 요소 | 설명 |
|---|---|---|---|
teleport_kubernetes_server_in_flight_requests | 게이지 | Teleport Kubernetes Service | 서버에서 현재 처리 중인 진행 중인 요청입니다. |
teleport_kubernetes_server_api_requests_total | 카운터 | Teleport Kubernetes Service | 서버에서 처리된 총 요청 수입니다. |
teleport_kubernetes_server_request_duration_seconds | 히스토그램 | Teleport Kubernetes Service | 총 요청 시간의 지연 분포입니다. |
teleport_kubernetes_server_response_size_bytes | 히스토그램 | Teleport Kubernetes Service | 응답 크기의 분포입니다. |
teleport_kubernetes_server_exec_in_flight_sessions | 게이지 | Teleport Kubernetes Service | 활성 kubectl exec 세션의 수입니다. |
teleport_kubernetes_server_exec_sessions_total | 카운터 | Teleport Kubernetes Service | 총 kubectl exec 세션의 수입니다. |
teleport_kubernetes_server_portforward_in_flight_sessions | 게이지 | Teleport Kubernetes Service | 활성 kubectl portforward 세션의 수입니다. |
teleport_kubernetes_server_portforward_sessions_total | 카운터 | Teleport Kubernetes Service | 총 kubectl portforward 세션의 수입니다. |
teleport_kubernetes_server_join_in_flight_sessions | 게이지 | Teleport Kubernetes Service | 활성 조인 세션의 수입니다. |
teleport_kubernetes_server_join_sessions_total | 카운터 | Teleport Kubernetes Service | 총 조인 세션의 수입니다. |
모든 Teleport 인스턴스
| 이름 | 유형 | 구성 요소 | 설명 |
|---|---|---|---|
process_state | 게이지 | Teleport | teleport 프로세스의 상태: 0 - 정상, 1 - 복구 중, 2 - 감소됨, 3 - 시작 중입니다. |
certificate_mismatch_total | 카운터 | Teleport | 인증서 불일치로 인한 SSH 서버 로그인 실패 횟수입니다. |
rx | 카운터 | Teleport | SSH 연결 중 수신된 바이트 수입니다. |
server_interactive_sessions_total | 게이지 | Teleport | 활성 세션의 수입니다. |
teleport_build_info | 게이지 | Teleport | gitref (git describe --long --tags), Go 버전 및 Teleport 버전을 포함한 Teleport의 빌드 정보를 제공합니다. 이 게이지의 값은 항상 1입니다. |
teleport_breaker_connector_executions_total | 카운터 | Teleport | Teleport 서비스에 의해 수행되는 회로 차단기를 통과한 Teleport Auth 서비스 API에 대한 요청 수로, 연결자의 role (거의 항상 Instance ), 관련 회로 차단기의 state , 회로 차단기에 의해 해석된 success 로 레이블이 지정됩니다. |
teleport_cache_events | 카운터 | Teleport | Teleport 서비스 캐시에 수신된 이벤트 수입니다. Teleport의 Auth 서비스, Proxy 서비스 및 기타 서비스는 해당 서비스와 관련된 수신 이벤트를 캐시합니다. |
teleport_cache_stale_events | 카운터 | Teleport | Teleport 서비스 캐시에 수신된 오래된 이벤트 수입니다. 오래된 이벤트의 비율이 높으면 백엔드가 감소했을 수 있습니다. |
tx | 카운터 | Teleport | SSH 연결 중 전송된 바이트 수입니다. |
Go 런타임 메트릭
이 메트릭은 Go 런타임에서 제공하며 Teleport에 특화된 것이 아닙니다.
| 이름 | 유형 | 구성 요소 | 설명 |
|---|---|---|---|
go_gc_duration_seconds | 요약 | Internal Go | GC 호출 지속 시간의 요약. |
go_goroutines | 게이지 | Internal Go | 현재 존재하는 고루틴의 수. |
go_info | 게이지 | Internal Go | Go 환경에 대한 정보. |
go_memstats_alloc_bytes_total | 카운터 | Internal Go | 할당된 총 바이트 수, 해제된 경우에도 포함. |
go_memstats_alloc_bytes | 게이지 | Internal Go | 할당된 바이트 수 및 여전히 사용 중인 바이트 수. |
go_memstats_buck_hash_sys_bytes | 게이지 | Internal Go | 프로파일링 버킷 해시 테이블에 사용되는 바이트 수. |
go_memstats_frees_total | 카운터 | Internal Go | 총 해제 수. |
go_memstats_gc_cpu_fraction | 게이지 | Internal Go | 프로그램 시작 이후 GC에 의해 사용된 프로그램의 가용 CPU 시간 비율. |
go_memstats_gc_sys_bytes | 게이지 | Internal Go | 가비지 수집 시스템 메타데이터에 사용된 바이트 수. |
go_memstats_heap_alloc_bytes | 게이지 | Internal Go | 할당된 힙 바이트 수 및 여전히 사용 중인 바이트 수. |
go_memstats_heap_idle_bytes | 게이지 | Internal Go | 사용 대기 중인 힙 바이트 수. |
go_memstats_heap_inuse_bytes | 게이지 | Internal Go | 사용 중인 힙 바이트 수. |
go_memstats_heap_objects | 게이지 | Internal Go | 할당된 객체 수. |
go_memstats_heap_released_bytes | 게이지 | Internal Go | OS에 반환된 힙 바이트 수. |
go_memstats_heap_sys_bytes | 게이지 | Internal Go | 시스템에서 얻은 힙 바이트 수. |
go_memstats_last_gc_time_seconds | 게이지 | Internal Go | 마지막 가비지 수집 이후 유닉스 에포크 기준 초 수. |
go_memstats_lookups_total | 카운터 | Internal Go | 총 포인터 조회 수. |
go_memstats_mallocs_total | 카운터 | Internal Go | 총 malloc 수. |
go_memstats_mcache_inuse_bytes | 게이지 | Internal Go | mcache 구조에 의해 사용되는 바이트 수. |
go_memstats_mcache_sys_bytes | 게이지 | Internal Go | 시스템에서 얻은 mcache 구조에 사용된 바이트 수. |
go_memstats_mspan_inuse_bytes | 게이지 | Internal Go | mspan 구조에 의해 사용되는 바이트 수. |
go_memstats_mspan_sys_bytes | 게이지 | Internal Go | 시스템에서 얻은 mspan 구조에 사용된 바이트 수. |
go_memstats_next_gc_bytes | 게이지 | Internal Go | 다음 가비지 수집이 발생할 때의 힙 바이트 수. |
go_memstats_other_sys_bytes | 게이지 | Internal Go | 기타 시스템 할당에 사용된 바이트 수. |
go_memstats_stack_inuse_bytes | 게이지 | Internal Go | 스택 할당자에 의해 사용되는 바이트 수. |
go_memstats_stack_sys_bytes | 게이지 | Internal Go | 스택 할당자를 위해 시스템에서 얻은 바이트 수. |
go_memstats_sys_bytes | 게이지 | Internal Go | 시스템에서 얻은 바이트 수. |
go_threads | 게이지 | Internal Go | 생성된 OS 스레드 수. |
process_cpu_seconds_total | 카운터 | Internal Go | 소비된 총 사용자 및 시스템 CPU 시간(초). |
process_max_fds | 게이지 | Internal Go | 최대 열린 파일 설명자 수. |
process_open_fds | 게이지 | Internal Go | 현재 열린 파일 설명자 수. |
process_resident_memory_bytes | 게이지 | Internal Go | 거주 메모리 크기(바이트). |
process_start_time_seconds | 게이지 | Internal Go | 유닉스 에포크 기준 프로세스 시작 시간(초). |
process_virtual_memory_bytes | 게이지 | Internal Go | 가상 메모리 크기(바이트). |
process_virtual_memory_max_bytes | 게이지 | Internal Go | 사용 가능한 최대 가상 메모리 양(바이트). |
Prometheus
| 이름 | 유형 | 구성 요소 | 설명 |
|---|---|---|---|
promhttp_metric_handler_requests_in_flight | 게이지 | prometheus | 현재 제공되고 있는 스크래프 수. |
promhttp_metric_handler_requests_total | 카운터 | prometheus | HTTP 상태 코드별 총 스크래프 수. |
분산 추적
Teleport 인스턴스에 대한 분산 추적을 활성화하는 방법입니다.
Teleport는 OpenTelemetry를 활용하여 추적을 생성하고
이를 모든 OpenTelemetry Protocol (OTLP)
수용이 가능한 수출자에게 내보냅니다. 텔레메트리 백엔드가 OTLP 추적 수신을 지원하지 않는 경우,
OpenTelemetry Collector를 활용하여
OTLP에서 텔레메트리 백엔드가 수용하는 형식으로 추적을 프록시할 수 있습니다.
Teleport 구성
teleport 인스턴스에 대한 추적을 활성화하려면 해당 인스턴스의 구성 파일(/etc/teleport.yaml )에 다음 섹션을 추가하십시오.
이 구성 필드에 대한 자세한 설명은 구성 참조 페이지를 참조하십시오.
tracing_service:
enabled: yes
exporter_url: grpc://collector.example.com:4317
sampling_rate_per_million: 1000000
샘플링 비율
샘플링 비율을 신중하게 선택하는 것이 중요합니다. 100% 비율로 샘플링을 할 경우 클러스터 성능에 부정적인 영향을 미칠 수 있습니다. Teleport는 들어오는 요청에 포함된 샘플링 비율을 존중하므로, tracing_service 가 활성화되어 있고 샘플링 비율이 0일 때에도 Teleport가 샘플링된 스팬을 가지고 있는 요청을 수신하면 해당 요청에 대한 응답으로 생성된 모든 스팬을 샘플링하고 내보냅니다.
내보내기 URL
exporter_url 설정은 Teleport가 스팬을 보내야 하는 위치를 나타냅니다. 지원되는 스킴은 grpc://, http://, https://, 및 file:// 입니다(스킴이 제공되지 않으면 grpc://가 사용됨).
file://를 사용할 경우, URL은 Teleport가 쓰기 권한을 가진 디렉토리에 대한 경로여야 합니다. 스팬은 제공된 디렉토리 내의 파일에 저장되며, 각 파일은 한 줄에 하나의 프로토 인코딩된 스팬을 포함합니다. 파일은 100MB를 초과하면 회전되며, 기본 제한을 무효화하려면 exporter_url 에 ?limit=<desired_file_size_in_bytes>를 추가하십시오(예: file:///var/lib/teleport/traces?limit=100 ).
기본적으로 내보내기 연결은 안전하지 않으며, TLS를 지원하려면 tracing_service 구성에 다음을 추가하십시오:
# 선택 사항 - 내보내기를 검증하는 데 사용되는 CA 인증서의 경로입니다.
ca_certs:
- /var/lib/teleport/exporter_ca.pem
# 선택 사항 - 내보내기용 mTLS를 활성화하는 데 사용되는 TLS 인증서의 경로입니다.
https_keypairs:
- key_file: /var/lib/teleport/exporter_key.pem
cert_file: /var/lib/teleport/exporter_cert.pem
teleport.yaml 을 업데이트한 후, 새로운 구성을 적용하기 위해 teleport 인스턴스를 시작하십시오.
tsh
tsh 에서 추적을 캡처하려면 명령에 --trace 플래그를 추가하기만 하면 됩니다. tsh --trace 로 생성된 모든 추적은 명령이 실행되는 클러스터의 Auth Service에 정의된 exporter_url 로 프록시됩니다.
tsh --trace ssh root@myservertsh --trace ls
tsh 에서 Auth Service 구성에 정의된 것과 다른 내보내기로 추적을 내보내는 것도 --trace-exporter 플래그를 통해 가능합니다. exporter_url 의 동일한 형식에 맞는 URL을 제공해야 합니다.
tsh --trace --trace-exporter=grpc://collector.example.com:4317 ssh root@myservertsh --trace --trace-exporter=file:///var/lib/teleport/traces ls
프로파일 수집
Teleport 인스턴스에서 런타임 프로파일링 데이터를 수집하는 방법입니다.
Teleport는 Go의 진단 기능을 활용하여 프로파일링 데이터를 수집하고 내보냅니다. 프로파일은 CPU 사용량의 급증 원인, 메모리 누수의 원인 또는 교착 상태의 원인을 식별하는 데 도움이 될 수 있습니다.
디버그 서비스 사용하기
Teleport 디버그 서비스는 관리자가 시작 시 pprof 엔드포인트를 활성화하지 않고도 진단 프로파일을 수집할 수 있게 합니다. 기본적으로 활성화된 이 서비스는 로컬 전용 액세스를 보장하며 같은 인스턴스 내에서만 사용할 수 있습니다.
teleport debug profile 은 pprof 프로파일 목록을 수집합니다. STDOUT에 압축된 tarball(.tar.gz )을 출력합니다. tar 를 사용하여 압축을 해제하거나 결과를 파일로 저장할 수 있습니다.
기본적으로 goroutine , heap 및 profile 프로파일을 수집합니다.
수집된 각 프로파일은 tarball 내부에 해당 파일이 있습니다. 예를 들어, goroutine,trace,heap 을 수집하면 goroutine.pprof , trace.pprof , heap.pprof 파일이 생성됩니다.
기본 프로파일을 수집하고 파일에 저장합니다.
teleport debug profile > pprof.tar.gztar xvf pprof.tar.gz기본 프로파일을 수집하고 압축 해제합니다.
teleport debug profile | tar xzv -C ./"trace" 및 "mutex" 프로파일을 수집하고 파일에 저장합니다.
teleport debug profile trace,mutex > pprof.tar.gz프로파일링 시간을 초 단위로 설정하여 프로파일을 수집합니다.
teleport debug profile -s 20 trace > pprof.tar.gz
텔레포트 구성 경로 지정
기본 경로(/etc/teleport.yaml )에 텔레포트 구성이 배치되어 있지 않은 경우,
-c/--config 플래그를 사용하여 CLI 명령에 그 위치를 지정해야 합니다.
Kubernetes 클러스터에서 Teleport를 실행 중인 경우, 대화형 세션 없이 로컬 디렉토리에 직접 프로파일을 수집할 수 있습니다:
kubectl -n teleport exec my-pod -- teleport debug profile > pprof.tar.gz
내용을 추출한 후, go tool 명령어를 사용하여 탐색하고 시각화할 수 있습니다:
터미널 대화형 탐색기를 엽니다.
go tool pprof heap.pprof웹 시각화기를 엽니다.
go tool pprof -http : heap.pproftrace 프로파일을 시각화합니다.
go tool trace trace.pprof
진단 엔드포인트 사용하기
프로파일링 엔드포인트는 --debug 플래그가 제공된 경우에만 활성화됩니다.
Teleport의 진단 HTTP 엔드포인트는 기본적으로 비활성화되어 있습니다. 이를 활성화하려면 다음 방법을 사용하십시오:
--diag-addr 플래그가 설치된 로컬 주소로 teleport 인스턴스를 시작하여 진단 엔드포인트가 수신 대기하게 설정합니다:
sudo teleport start --debug --diag-addr=127.0.0.1:3000
teleport 인스턴스의 구성 파일(기본적으로 /etc/teleport.yaml )을 편집하여 다음 내용을 포함하십시오:
teleport:
diag_addr: 127.0.0.1:3000
디버그 로그를 활성화하려면:
log:
severity: DEBUG
Teleport가 이제 진단 엔드포인트를 제공하는지 확인하십시오:
curl http://127.0.0.1:3000/healthz
프로파일 수집하기
Go의 표준 프로파일링 엔드포인트는 http://127.0.0.1:3000/debug/pprof/에서 제공됩니다. 프로파일을 검색하려면 원하는 프로파일 유형에 해당하는 엔드포인트로 요청을 보내야 합니다. 문제를 디버깅할 때 일정 기간 동안 일련의 프로파일을 수집하는 것이 유용합니다.
CPU
CPU 프로파일은 사용자 지정 기간 동안 수집된 실행 통계 정보를 보여줍니다:
프로파일을 파일로 다운로드합니다:
curl -o cpu.profile http://127.0.0.1:3000/debug/pprof/profile?seconds=30프로파일을 시각화합니다.
go tool pprof -http : cpu.profile
Goroutine
Goroutine 프로파일은 시스템 내에서 실행 중인 모든 goroutine의 스택 트레이스를 보여줍니다:
프로파일을 파일로 다운로드합니다:
curl -o goroutine.profile http://127.0.0.1:3000/debug/pprof/goroutine프로파일을 시각화합니다.
go tool pprof -http : goroutine.profile
Heap
Heap 프로파일은 시스템에서 할당된 객체를 보여줍니다:
프로파일을 파일로 다운로드합니다:
curl -o heap.profile http://127.0.0.1:3000/debug/pprof/heap프로파일을 시각화합니다.
go tool pprof -http : heap.profile
Trace
Trace 프로파일은 사용자 지정 기간 동안 Go 런타임이 수집한 스케줄링, 시스템 호출, 가비지 수집, 힙 크기 및 기타 이벤트를 캡처합니다:
프로파일을 파일로 다운로드합니다:
curl -o trace.out http://127.0.0.1:3000/debug/pprof/trace?seconds=5프로파일을 시각화합니다.
go tool trace trace.out
추가 읽기
- Go 생태계에서 진단에 대한 더 많은 정보: https://go.dev/doc/diagnostics
- Go의 프로파일링 엔드포인트: https://golang.org/pkg/net/http/pprof/
- Go 프로그램 프로파일링에 대한 심층 분석: https://go.dev/blog/pprof