Teleport는 건강 상태 확인 메커니즘을 제공하여 시스템의 상태가 양호하고 트래픽을 처리할 준비가 되었는지 확인합니다. 메트릭, 추적, 그리고 프로파일링은 클러스터 성능과 응답성을 추적하는 심층 데이터를 제공합니다.
상태 모니터링 활성화
Teleport 인스턴스의 건강 상태를 모니터링하는 방법입니다.
Teleport의 진단 HTTP 엔드포인트는 기본적으로 비활성화되어 있습니다. 다음을 통해 활성화할 수 있습니다:
--diag-addr
플래그가 설정된 teleport
인스턴스를 시작하여
진단 엔드포인트가 수신 대기할 로컬 주소를 지정하세요:
sudo teleport start {{ flags }} --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 {{ flags }} --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 Enterprise(클라우드 호스팅)는 인증 서비스 및 프록시 서비스에 대한 모니터링 엔드포인트를 노출하지 않습니다.
Auth Service and backends
이름 | 타입 | 컴포넌트 | 설명 |
---|---|---|---|
audit_failed_disk_monitoring | counter | Teleport Audit Log | 디스크 모니터링 실패 횟수. |
audit_failed_emit_events | counter | Teleport Audit Log | 감사 이벤트를 전송하지 못한 횟수입니다. |
audit_percentage_disk_space_used | gauge | Teleport Audit Log | 사용된 디스크 공간의 백분율입니다. |
audit_server_open_files | gauge | Teleport Audit Log | 열려 있는 감사 파일 수입니다. |
auth_generate_requests_throttled_total | counter | Teleport Auth | 새 서버 키를 생성하기 위한 조절된 요청 수입니다. |
auth_generate_requests_total | counter | Teleport Auth | 새 서버 키 생성 요청 수입니다. |
auth_generate_requests | gauge | Teleport Auth | 현재 생성 요청 수입니다. |
auth_generate_seconds | histogram | Teleport Auth | 요청 생성을 위한 지연 시간입니다. |
backend_batch_read_requests_total | counter | cache | 백엔드에 대한 읽기 요청 수입니다. |
backend_batch_read_seconds | histogram | cache | 배치 읽기 작업의 지연 시간입니다. |
backend_batch_write_requests_total | counter | cache | 백엔드에 대한 배치 쓰기 요청 수입니다. |
backend_batch_write_seconds | histogram | cache | 백엔드 배치 쓰기 작업의 지연 시간입니다. |
backend_read_requests_total | counter | cache | 백엔드에 대한 읽기 요청 수입니다. |
backend_read_seconds | histogram | cache | 읽기 작업의 지연 시간입니다. |
backend_requests | counter | cache | 백엔드에 대한 요청(읽기, 쓰기, 저장) 수입니다. |
backend_write_requests_total | counter | cache | 백엔드에 대한 쓰기 요청 수입니다. |
backend_write_seconds | histogram | cache | 백엔드 쓰기 작업의 지연 시간입니다. |
cluster_name_not_found_total | counter | Teleport Auth | 클러스터를 찾을 수 없는 횟수입니다. |
dynamo_requests_total | counter | DynamoDB | DynamoDB API에 대한 총 요청 수입니다. |
dynamo_requests | counter | DynamoDB | 결과별로 그룹화된 DynamoDB API에 대한 총 요청 수입니다. |
dynamo_requests_seconds | histogram | DynamoDB | DynamoDB API 요청의 지연 시간입니다. |
etcd_backend_batch_read_requests | counter | etcd | etcd 데이터베이스에 대한 읽기 요청 수입니다. |
etcd_backend_batch_read_seconds | histogram | etcd | etcd 읽기 작업의 지연 시간. |
etcd_backend_read_requests | counter | etcd | etcd 데이터베이스에 대한 읽기 요청 수입니다. |
etcd_backend_read_seconds | histogram | etcd | etcd 읽기 작업의 지연 시간. |
etcd_backend_tx_requests | counter | etcd | 데이터베이스에 대한 트랜잭션 요청 수입니다. |
etcd_backend_tx_seconds | histogram | etcd | etcd 트랜잭션 작업의 지연 시간. |
etcd_backend_write_requests | counter | etcd | 데이터베이스에 대한 쓰기 요청 수입니다. |
etcd_backend_write_seconds | histogram | etcd | etcd 쓰기 작업의 지연 시간. |
teleport_etcd_events | counter | etcd | 처리된 총 etcd 이벤트 수입니다. |
teleport_etcd_event_backpressure | counter | etcd | 이벤트 처리에 배압이 발생한 총 횟수입니다. |
firestore_events_backend_batch_read_requests | counter | GCP Cloud Firestore | Cloud Firestore 이벤트에 대한 배치 읽기 요청 수입니다. |
firestore_events_backend_batch_read_seconds | histogram | GCP Cloud Firestore | Cloud Firestore 이벤트 배치 읽기 작업의 지연 시간입니다. |
firestore_events_backend_batch_write_requests | counter | GCP Cloud Firestore | Cloud Firestore 이벤트에 대한 배치 쓰기 요청 수입니다. |
firestore_events_backend_batch_write_seconds | histogram | GCP Cloud Firestore | Cloud Firestore 이벤트 배치 쓰기 작업의 지연 시간입니다. |
firestore_events_backend_write_requests | counter | GCP Cloud Firestore | Cloud Firestore 이벤트에 대한 쓰기 요청 수입니다. |
firestore_events_backend_write_seconds | histogram | GCP Cloud Firestore | Cloud Firestore 이벤트 쓰기 작업의 지연 시간. |
gcs_event_storage_downloads_seconds | histogram | GCP GCS | GCS 다운로드 작업의 지연 시간. |
gcs_event_storage_downloads | counter | GCP GCS | GCS 백엔드에서 다운로드한 수입니다. |
gcs_event_storage_uploads_seconds | histogram | GCP GCS | GCS 업로드 작업의 지연 시간. |
gcs_event_storage_uploads | counter | GCP GCS | GCS 백엔드에 업로드한 수입니다. |
grpc_server_started_total | counter | Teleport Auth | 서버에서 시작된 총 RPC 수입니다. |
grpc_server_handled_total | counter | Teleport Auth | 성공 여부에 관계없이 서버에서 완료된 총 RPC 수입니다. |
grpc_server_msg_received_total | counter | Teleport Auth | 서버에서 받은 총 RPC 스트림 메시지 수입니다. |
grpc_server_msg_sent_total | counter | Teleport Auth | 서버에서 보낸 총 gRPC 스트림 메시지 수입니다. |
heartbeat_connections_received_total | counter | Teleport Auth | 인증 서비스가 하트비트 연결을 받은 횟수로, 총 심박수 에이전트를 나타냅니다. |
s3_requests_total | counter | Amazon S3 | S3 API에 대한 총 요청 수입니다. |
s3_requests | counter | Amazon S3 | 결과별로 그룹화된 S3 API에 대한 총 요청 수입니다. |
s3_requests_seconds | histogram | Amazon S3 | S3 API에 대한 지연 시간을 요청합니다. |
teleport_audit_emit_events | counter | Teleport Audit Log | 방출된 감사 이벤트 수입니다. |
teleport_audit_parquetlog_batch_processing_seconds | histogram | Teleport Audit Log | Parquet 형식 감사 로그에서 단일 배치 이벤트를 처리하는 기간입니다. |
teleport_audit_parquetlog_s3_flush_seconds | histogram | Teleport Audit Log | Parquet 형식 감사 로그에서 Parquet 파일을 S3로 플러싱하는 시간입니다. |
teleport_audit_parquetlog_delete_events_seconds | histogram | Teleport Audit Log | Parquet 형식 감사 로그의 SQS 삭제 이벤트 기간입니다. |
teleport_audit_parquetlog_batch_size | histogram | Teleport Audit Log | Parquet 형식 감사 로그의 단일 배치에 있는 이벤트의 전체 크기입니다. |
teleport_audit_parquetlog_batch_count | counter | Teleport Audit Log | Parquet 형식 감사 로그의 단일 배치에 있는 총 이벤트 수입니다. |
teleport_audit_parquetlog_last_processed_timestamp | gauge | Teleport Audit Log | Parquet 형식 감사 로그의 마지막 처리 시간 수입니다. |
teleport_audit_parquetlog_age_oldest_processed_message | gauge | Teleport Audit Log | Parquet 형식 감사 로그에서 가장 오래된 이벤트의 연령입니다. |
teleport_audit_parquetlog_errors_from_collect_count | counter | Teleport Audit Log | Parquet 형식 감사 로그의 수집 실패 수입니다. |
teleport_postgres_events_backend_write_requests | counter | Postgres (Events) | 요청 '상태'(성공 또는 실패)로 레이블이 지정된 포스트그레스 이벤트에 대한 쓰기 요청 수입니다. |
teleport_postgres_events_backend_batch_read_requests | counter | Postgres (Events) | 요청 '상태'(성공 또는 실패)로 레이블이 지정된 포스트그레스 이벤트에 대한 배치 읽기 요청 수입니다. |
teleport_postgres_events_backend_batch_delete_requests | counter | Postgres (Events) | 요청 '상태'(성공 또는 실패)로 레이블이 지정된 포스트그레스 이벤트에 대한 일괄 삭제 요청 수입니다. |
teleport_postgres_events_backend_write_seconds | histogram | Postgres (Events) | 포스트그레스 이벤트 쓰기 작업 지연 시간(초) |
teleport_postgres_events_backend_batch_read_seconds | histogram | Postgres (Events) | 포스트그레스 이벤트 배치 읽기 작업의 지연 시간(초)입니다. |
teleport_postgres_events_backend_batch_delete_seconds | histogram | Postgres (Events) | 포스트그레스 이벤트 배치 삭제 작업의 지연 시간(초)입니다. |
teleport_connected_resources | gauge | Teleport Auth | 킵얼라이브를 통해 연결된 리소스의 수와 유형. |
teleport_registered_servers | gauge | Teleport Auth | 버전별로 그룹화된 인증 서비스 인스턴스에 연결된 텔레포트 서비스 수입니다. |
teleport_registered_servers_by_install_methods | gauge | Teleport Auth | 설치 방법별로 그룹화된 인증 서비스 인스턴스에 연결된 텔레포트 서비스 수입니다. |
user_login_total | counter | Teleport Auth | 사용자 로그인 수입니다. |
teleport_migrations | gauge | Teleport Auth | 각 마이그레이션이 활성화되어 있는지(1) 또는 활성화되어 있지 않은지(0) 추적합니다. |
watcher_event_sizes | histogram | cache | 방출된 이벤트의 전체 크기입니다. |
watcher_events | histogram | cache | 방출된 이벤트의 리소스 크기당. |
Enhanced Session Recording / BPF
이름 | 속성 | 컴포넌트 | 설명 |
---|---|---|---|
bpf_lost_command_events | counter | BPF | 손실된 명령 이벤트 수입니다. |
bpf_lost_disk_events | counter | BPF | 손실된 디스크 이벤트 수입니다. |
bpf_lost_network_events | counter | BPF | 손실된 네트워크 이벤트 수입니다. |
Proxy Service
이름 | 속성 | 컴포넌트 | 설명 |
---|---|---|---|
failed_connect_to_node_attempts_total | counter | Teleport Proxy | SSH 서비스에 대한 SSH 연결 시도 실패 횟수. 'teleport_connect_to_node_attempts_total'과 함께 사용하여 실패율을 얻습니다. |
failed_login_attempts_total | counter | Teleport Proxy | 실패한 'tsh 로그인' 또는 'tsh SSH' 로그인 수입니다. |
grpc_client_started_total | counter | Teleport Proxy | 클라이언트에서 시작된 총 RPC 수입니다. |
grpc_client_handled_total | counter | Teleport Proxy | 성공 여부에 관계없이 클라이언트에서 완료된 총 RPC 수입니다. |
grpc_client_msg_received_total | counter | Teleport Proxy | 클라이언트에서 받은 총 RPC 스트림 메시지 수입니다. |
grpc_client_msg_sent_total | counter | Teleport Proxy | 클라이언트가 보낸 총 gRPC 스트림 메시지 수입니다. |
proxy_connection_limit_exceeded_total | counter | Teleport Proxy | 프록시 서비스 연결 제한을 초과한 연결 수입니다. |
proxy_peer_client_dial_error_total | counter | Teleport Proxy | 전화 걸기 피어 프록시 서비스 인스턴스에서 발생한 총 오류 수입니다. |
proxy_peer_server_connections | gauge | Teleport Proxy | 현재 열려 있는 프록시 프록시 서비스 인스턴스에 대한 연결 수입니다. |
proxy_peer_client_rpc | gauge | Teleport Proxy | 현재 클라이언트 RPC 요청 수입니다. |
proxy_peer_client_rpc_total | counter | Teleport Proxy | 총 클라이언트 RPC 요청 수입니다. |
proxy_peer_client_rpc_duration_seconds | histogram | Teleport Proxy | 클라이언트가 보낸 RPC의 지속 시간(초)입니다. |
proxy_peer_client_message_sent_size | histogram | Teleport Proxy | 클라이언트가 보낸 메시지 크기입니다. |
proxy_peer_client_message_received_size | histogram | Teleport Proxy | 클라이언트가 받은 메시지 크기입니다. |
proxy_peer_server_connections | gauge | Teleport Proxy | 현재 피어 프록시 서비스 클라이언트에 대한 연결이 열려 있는 수입니다. |
proxy_peer_server_rpc | gauge | Teleport Proxy | 현재 서버 RPC 요청 수입니다. |
proxy_peer_server_rpc_total | counter | Teleport Proxy | 총 서버 RPC 요청 수입니다. |
proxy_peer_server_rpc_duration_seconds | histogram | Teleport Proxy | 서버에서 전송한 RPC의 지속 시간(초)입니다. |
proxy_peer_server_message_sent_size | histogram | Teleport Proxy | 서버에서 보낸 메시지 크기입니다. |
proxy_peer_server_message_received_size | histogram | Teleport Proxy | 서버에서 받은 메시지 크기입니다. |
proxy_ssh_sessions_total | gauge | Teleport Proxy | 이 프록시 서비스 인스턴스를 통한 활성 세션 수입니다. |
proxy_missing_ssh_tunnels | gauge | Teleport Proxy | 누락된 SSH 터널의 수입니다. 텔레포트 인스턴스가 모든 프록시 서비스 인스턴스를 발견한 경우 디버깅하는 데 사용됩니다. |
remote_clusters | gauge | Teleport Proxy | 리프 클러스터의 인바운드 연결 수입니다. |
teleport_connect_to_node_attempts_total | counter | Teleport Proxy | SSH 서비스에 대한 SSH 연결 시도 횟수. 실패율을 얻으려면 'failed_connect_to_node_attempts_total'과 함께 사용합니다. |
teleport_reverse_tunnels_connected | gauge | Teleport Proxy | 텔레포트 인스턴스에 의해 텔레포트 프록시 서비스에 연결된 역 SSH 터널의 수입니다. |
trusted_clusters | gauge | Teleport Proxy | 리프 클러스터에 대한 아웃바운드 연결 수입니다. |
teleport_proxy_db_connection_setup_time_seconds | histogram | Teleport Proxy | 프록시 서비스에서 DB 서비스에 연결할 시간입니다. |
teleport_proxy_db_connection_dial_attempts_total | counter | Teleport Proxy | 프록시에서 DB 서비스로의 다이얼 시도 횟수. |
teleport_proxy_db_connection_dial_failures_total | counter | Teleport Proxy | 프록시에서 DB 서비스로의 다이얼 시도 실패 횟수. |
teleport_proxy_db_attempted_servers_total | histogram | Teleport Proxy | 프록시 서비스에서 DB 서비스로의 연결 시도 중에 처리된 서버 수입니다. |
teleport_proxy_db_connection_tls_config_time_seconds | histogram | Teleport Proxy | 프록시 서비스에서 DB 서비스에 연결하기 위한 TLS 구성을 가져올 시간입니다. |
teleport_proxy_db_active_connections_total | gauge | Teleport Proxy | 프록시 서비스에서 현재 활성화된 DB 서비스 연결 수입니다. |
Database Service
Name | Type | Component | Description |
---|---|---|---|
teleport_db_messages_from_client_total | counter | Teleport Database Service | DB 클라이언트로부터 받은 메시지(패킷) 수입니다. |
teleport_db_messages_from_server_total | counter | Teleport Database Service | DB 서버로부터 받은 메시지(패킷) 수입니다. |
teleport_db_method_call_count_total | counter | Teleport Database Service | DB 메서드가 호출된 횟수입니다. |
teleport_db_method_call_latency_seconds | histogram | Teleport Database Service | DB 메서드 호출의 통화 지연 시간. |
teleport_db_initialized_connections_total | counter | Teleport Database Service | 초기화된 DB 연결 수입니다. |
teleport_db_active_connections_total | gauge | Teleport Database Service | 활성 DB 연결 수입니다. |
teleport_db_connection_durations_seconds | histogram | Teleport Database Service | DB 연결 기간입니다. |
teleport_db_connection_setup_time_seconds | histogram | Teleport Database Service | 요청이 처리되기 전 DB 연결을 설정하는 초기 시간입니다.. |
teleport_db_errors_total | counter | Teleport Database Service | 클라이언트에 전송된 합성 DB 오류 수입니다. |
Kubernetes Access
다음 표에서는 프록시 서비스에서 사용할 수 있는 모든 메트릭을 식별합니다 Kubernetes 액세스가 활성화되었습니다.
클라이언트
다음 표는 서비스가 연결될 때 사용할 수 있는 모든 메트릭을 식별합니다 업스트림 서버로. '프록시'의 경우 업스트림 서버는 레거시 모드에서 실행 중인 경우 '쿠버네티스_서비스' 또는 '쿠버네티스 클러스터'입니다.
이름 | 타입 | 컴포넌트 | 설명 |
---|---|---|---|
teleport_kubernetes_client_in_flight_requests | gauge | Teleport Kubernetes Proxy | 업스트림 응답을 기다리는 기내 요청입니다. |
teleport_kubernetes_client_requests_total | counter | Teleport Kubernetes Proxy | 업스트림 텔레포트 프록시, kube_service 또는 Kubernetes 클러스터 서버로 보낸 총 요청 수입니다. |
teleport_kubernetes_client_tls_duration_seconds | histogram | Teleport Kubernetes Proxy | TLS 악수의 지연 시간 분포. |
teleport_kubernetes_client_got_conn_duration_seconds | histogram | Teleport Kubernetes Proxy | 역터널 또는 다이렉트 다이얼러를 사용하여 업스트림 서버로 다이얼하는 데 걸리는 지연 시간 분포. |
teleport_kubernetes_client_first_byte_response_duration_seconds | histogram | Teleport Kubernetes Proxy | 업스트림 서버로부터 첫 번째 응답 바이트를 수신하는 데 걸리는 지연 시간 분포입니다. |
teleport_kubernetes_client_request_duration_seconds | histogram | Teleport Kubernetes Proxy | 업스트림 요청 시간의 지연 시간 분포입니다. |
서버
다음 표는 수신 연결에 사용할 수 있는 모든 메트릭을 식별합니다.
이름 | 타입 | 컴포넌트 | 설명 |
---|---|---|---|
teleport_kubernetes_server_in_flight_requests | gauge | Teleport Kubernetes Proxy | 현재 서버에서 처리 중인 기내 요청입니다. |
teleport_kubernetes_server_api_requests_total | counter | Teleport Kubernetes Proxy | 서버에서 처리한 총 요청 수입니다. |
teleport_kubernetes_server_request_duration_seconds | histogram | Teleport Kubernetes Proxy | 총 요청 시간의 지연 시간 분포입니다. |
teleport_kubernetes_server_response_size_bytes | histogram | Teleport Kubernetes Proxy | 응답 크기 분포입니다. |
teleport_kubernetes_server_exec_in_flight_sessions | gauge | Teleport Kubernetes Proxy | 활성 큐브 실행 세션 수입니다. |
teleport_kubernetes_server_exec_sessions_total | counter | Teleport Kubernetes Proxy | 쿠벡틀 실행 세션의 총 수입니다. |
teleport_kubernetes_server_portforward_in_flight_sessions | gauge | Teleport Kubernetes Proxy | 활성 큐브 포트포워드 세션 수입니다. |
teleport_kubernetes_server_portforward_sessions_total | counter | Teleport Kubernetes Proxy | 활성 큐브 포트포워드 세션 수입니다. |
teleport_kubernetes_server_join_in_flight_sessions | gauge | Teleport Kubernetes Proxy | 활성 가입 세션 수, |
teleport_kubernetes_server_join_sessions_total | counter | Teleport Kubernetes Proxy | 총 가입 세션 수입니다. |
텔레포트 SSH 서비스
Name | Type | Component | Description |
---|---|---|---|
user_max_concurrent_sessions_hit_total | counter | Teleport SSH | 사용자가 동시 세션 제한을 초과한 횟수입니다. |
텔레포트 Kubernetes 서비스
다음 표는 서비스가 연결될 때 사용할 수 있는 모든 메트릭을 식별합니다 업스트림 서버로. 'kubernetes_service'의 경우 업스트림 서버입니다 는 항상 쿠버네티스 클러스터입니다.
이름 | 타입 | 컴포넌트 | 설명 |
---|---|---|---|
teleport_kubernetes_client_in_flight_requests | gauge | Teleport Kubernetes Service | 업스트림 응답을 기다리는 비편 요청입니다. |
teleport_kubernetes_client_requests_total | counter | Teleport Kubernetes Service | 업스트림 텔레포트 프록시, kube_service 또는 Kubernetes 클러스터 서버로 보낸 총 요청 수입니다. |
teleport_kubernetes_client_tls_duration_seconds | histogram | Teleport Kubernetes Service | TLS 악수의 지연 시간 분포. |
teleport_kubernetes_client_got_conn_duration_seconds | histogram | Teleport Kubernetes Service | 업스트림 서버로 다이얼하는 데 걸리는 지연 시간 분포 - 역터널 또는 직접 다이얼을 사용합니다. |
teleport_kubernetes_client_first_byte_response_duration_seconds | histogram | Teleport Kubernetes Service | 업스트림 서버로부터 첫 번째 응답 바이트를 수신하는 데 걸리는 지연 시간 분포입니다. |
teleport_kubernetes_client_request_duration_seconds | histogram | Teleport Kubernetes Service | 업스트림 요청 시간의 지연 시간 분포입니다. |
다음 표는 수신 연결에 사용할 수 있는 모든 메트릭을 식별합니다.
이름 | 타입 | 컴포넌트 | 설명 |
---|---|---|---|
teleport_kubernetes_server_in_flight_requests | gauge | Teleport Kubernetes Service | 현재 서버에서 처리 중인 기내 요청입니다. |
teleport_kubernetes_server_api_requests_total | counter | Teleport Kubernetes Service | 서버에서 처리한 총 요청 수입니다. |
teleport_kubernetes_server_request_duration_seconds | histogram | Teleport Kubernetes Service | 총 요청 시간의 지연 시간 분포입니다. |
teleport_kubernetes_server_response_size_bytes | histogram | Teleport Kubernetes Service | 응답 크기 분포입니다. |
teleport_kubernetes_server_exec_in_flight_sessions | gauge | Teleport Kubernetes Service | 활성 큐브 실행 세션 수입니다. |
teleport_kubernetes_server_exec_sessions_total | counter | Teleport Kubernetes Service | 쿠벡틀 실행 세션의 총 수. |
teleport_kubernetes_server_portforward_in_flight_sessions | gauge | Teleport Kubernetes Service | 활성 큐브 포트포워드 세션 수입니다. |
teleport_kubernetes_server_portforward_sessions_total | counter | Teleport Kubernetes Service | 활성 큐브 포트포워드 세션 수입니다. |
teleport_kubernetes_server_join_in_flight_sessions | gauge | Teleport Kubernetes Service | 활성 가입 세션 수, |
teleport_kubernetes_server_join_sessions_total | counter | Teleport Kubernetes Service | 총 가입 세션 수입니다. |
모든 텔레포트 인스턴스
이름 | 타입 | 컴포넌트 | 설명 |
---|---|---|---|
process_state | gauge | Teleport | 텔레포트 프로세스의 상태: 0 - OK, 1 - 복구, 2 - 성능 저하, 3 - 시작. |
certificate_mismatch_total | counter | Teleport | 인증서 불일치로 인한 SSH 서버 로그인 실패 횟수입니다. |
rx | counter | Teleport | SSH 연결 중에 받은 바이트 수입니다. |
server_interactive_sessions_total | gauge | Teleport | 활성 세션 수입니다. |
teleport_build_info | gauge | Teleport | gitref(기트 설명 --길다 --태그), Go 버전, 텔레포트 버전 등 텔레포트의 빌드 정보를 제공합니다. 이 게이지의 값은 항상 1이 됩니다. |
teleport_breaker_connector_executions_total | counter | Teleport | 커넥터의 '역할'(거의 항상 '인스턴스'), 관련 차단기의 '상태', 차단기가 해석한 '성공'으로 표시된 텔레포트 서비스에서 수행하는 차단기를 통과하는 텔레포트 인증 서비스 API에 요청한 횟수입니다. |
teleport_cache_events | counter | Teleport | 텔레포트 서비스 캐시가 수신한 이벤트 수입니다. 텔레포트의 인증 서비스, 프록시 서비스 및 기타 서비스는 해당 서비스와 관련된 수신 이벤트를 캐시합니다. |
teleport_cache_stale_events | counter | Teleport | 텔레포트 서비스 캐시가 수신한 오래된 이벤트 수입니다. 오래된 이벤트의 비율이 높으면 백엔드가 저하될 수 있습니다. |
tx | counter | Teleport | SSH 연결 중에 전송된 바이트 수입니다. |
런타임 메트릭 이동
이러한 메트릭은 이동 실행 시간에 의해 표면화되며 텔레포트에만 국한되지 않습니다.
이름 | 타입 | 컴포넌트 | 설명 |
---|---|---|---|
go_gc_duration_seconds | summary | Internal Go | GC 호출 기간 요약입니다. |
go_goroutines | gauge | Internal Go | 현재 존재하는 고루틴 수입니다. |
go_info | gauge | Internal Go | Go 환경에 대한 정보입니다. |
go_memstats_alloc_bytes_total | counter | Internal Go | 자유로워지더라도 할당된 총 바이트 수입니다. |
go_memstats_alloc_bytes | gauge | Internal Go | 할당되었지만 여전히 사용 중인 바이트 수입니다. |
go_memstats_buck_hash_sys_bytes | gauge | Internal Go | 프로파일링 버킷 해시 테이블에 사용된 바이트 수입니다. |
go_memstats_frees_total | counter | Internal Go | 총 무료 횟수입니다. |
go_memstats_gc_cpu_fraction | gauge | Internal Go | 프로그램이 시작된 이후 GC가 사용한 이 프로그램의 사용 가능한 CPU 시간 중 극히 일부입니다. |
go_memstats_gc_sys_bytes | gauge | Internal Go | 가비지 수집 시스템 메타데이터에 사용된 바이트 수입니다. |
go_memstats_heap_alloc_bytes | gauge | Internal Go | 할당되었지만 여전히 사용 중인 힙 바이트 수입니다. |
go_memstats_heap_idle_bytes | gauge | Internal Go | 사용 대기 중인 힙 바이트 수입니다. |
go_memstats_heap_inuse_bytes | gauge | Internal Go | 사용 중인 힙 바이트 수입니다. |
go_memstats_heap_objects | gauge | Internal Go | Number of allocated objects. |
go_memstats_heap_released_bytes | gauge | Internal Go | 할당된 개체 수입니다. |
go_memstats_heap_sys_bytes | gauge | Internal Go | 시스템에서 얻은 힙 바이트 수입니다. |
go_memstats_last_gc_time_seconds | gauge | Internal Go | 마지막 가비지 컬렉션의 유닉스 시대 이후의 초 수입니다. |
go_memstats_lookups_total | counter | Internal Go | 총 포인터 검색 수입니다. |
go_memstats_mallocs_total | counter | Internal Go | 총 malloc 수입니다. |
go_memstats_mcache_inuse_bytes | gauge | Internal Go | 맥캐시 구조에서 사용 중인 바이트 수입니다. |
go_memstats_mcache_sys_bytes | gauge | Internal Go | 시스템에서 가져온 맥캐시 구조에 사용된 바이트 수입니다. |
go_memstats_mspan_inuse_bytes | gauge | Internal Go | mspan 구조에서 사용 중인 바이트 수입니다. |
go_memstats_mspan_sys_bytes | gauge | Internal Go | 시스템에서 가져온 mspan 구조에 사용된 바이트 수입니다. |
go_memstats_next_gc_bytes | gauge | Internal Go | 다음 가비지 컬렉션이 수행되는 힙 바이트 수입니다. |
go_memstats_other_sys_bytes | gauge | Internal Go | 다른 시스템 할당에 사용된 바이트 수입니다. |
go_memstats_stack_inuse_bytes | gauge | Internal Go | 스택 할당기에서 사용 중인 바이트 수입니다. |
go_memstats_stack_sys_bytes | gauge | Internal Go | 스택 할당기에 대해 시스템에서 얻은 바이트 수입니다. |
go_memstats_sys_bytes | gauge | Internal Go | 시스템에서 얻은 바이트 수 |
go_threads | gauge | Internal Go | 생성된 OS 스레드 수입니다. |
process_cpu_seconds_total | counter | Internal Go | 사용자 및 시스템 CPU 총 소요 시간(초)입니다. |
process_max_fds | gauge | Internal Go | 열린 파일 설명자의 최대 수 |
process_open_fds | gauge | Internal Go | 열려 있는 파일 설명자 수입니다. |
process_resident_memory_bytes | gauge | Internal Go | 상주 메모리 크기(바이트)입니다. |
process_start_time_seconds | gauge | Internal Go | 유닉스 시대 이후 프로세스의 시작 시간(초)입니다. |
process_virtual_memory_bytes | gauge | Internal Go | 가상 메모리 크기(바이트)입니다. |
process_virtual_memory_max_bytes | gauge | Internal Go | 사용 가능한 최대 가상 메모리 양(바이트). |
Prometheus
이름 | 타입 | 컴포넌트 | 설명 |
---|---|---|---|
promhttp_metric_handler_requests_in_flight | gauge | prometheus | 현재 제공 중인 스크래핑 수입니다. |
promhttp_metric_handler_requests_total | counter | 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=<원하는_파일_크기_바이트>
를 추가합니다(예: file:///var/lib/teleport/traces?limit=100
).
기본적으로 수출업체와의 연결은 안전하지 않으므로, TLS를 지원하기 위해 다음을 tracing_service
구성에 추가하세요.
# 선택적 경로로 CA 인증서는 수출업체의 유효성을 검사하는 데 사용됩니다.
ca_certs:
- /var/lib/teleport/exporter_ca.pem
# 선택적 경로로 TLS 인증서는 수출업체에 대해 mTLS를 활성화하는 데 사용됩니다.
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
에 의해 생성된 모든 추적은 명령이 실행되는 클러스터의 인증 서비스에 대해 정의된 exporter_url
로 프록시됩니다.
tsh --trace ssh root@myservertsh --trace ls
tsh
에서 인증 서비스 구성에 정의된 것과 다른 수출업체로 추적을 내보내는 것도 --trace-exporter
플래그를 통해 가능합니다. URL은 tracing_service
의 exporter_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 프로파일 목록을 수집합니다. 압축된 tarball(.tar.gz
)을 STDOUT으로 출력합니다. 이는 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
)에 텔레포트 구성이 없으면,
CLI 명령에 -c/--config
플래그를 사용하여 그 위치를 지정해야 합니다.
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.pprof추적 프로파일 시각화
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