Honeycomb에 대한 GCP 정보 및 시스템 측정항목 수집
정적 런타임 정보
가장 먼저 수집해야 할 것은 현재 프로세스를 호스팅하는 컨테이너 런타임에 대한 정적 정보입니다. API 서비스의 기본 배포 인프라로 Cloud Run을 사용하고 있으므로 이것이 첫 번째 중지입니다. metadata server은 "Container instance metadata server"에 설명된 대로 컨테이너 인스턴스에 대한 세부 정보를 제공합니다.
GCP ruby gem은 메타데이터 서버에 액세스할 수 있도록 제공합니다
Google::Cloud.env
. 다음은 간편한 필터링을 위해 모든 범위에 메타데이터를 추가하는 방법에 대한 정리된 예입니다.require 'honeycomb-beeline'
Honeycomb.configure do |config|
config.service_name = 'backend'
end
env = Google::Cloud.env
Honeycomb.client.libhoney.add_field('gcp.project_id', env.project_id)
Honeycomb.client.libhoney.add_field('gcp.instance_id', env.lookup_metadata('instance', 'id'))
Honeycomb.client.libhoney.add_field('gcp.instance_name', env.instance_name)
region_result = env.lookup_metadata "instance", "region"
region = region_result&.split('/')&.last
Honeycomb.client.libhoney.add_field('gcp.instance_region', region)
Honeycomb.client.libhoney.add_field('gcp.instance_zone', env.instance_zone)
Honeycomb.client.libhoney.add_field('gcp.instance_machine_type', env.instance_machine_type)
Honeycomb.client.libhoney.add_field('gcp.instance_tags', env.instance_tags)
Honeycomb.client.libhoney.add_field('gcp.knative_service_id', env.knative_service_id)
Honeycomb.client.libhoney.add_field('gcp.knative_service_revision', env.knative_service_revision)
앱 시작 시 로드되는 위치에 이 코드를 넣습니다. sinatra와 같은 랙 기반 프레임워크의 경우 이것은
config.ru
이며, 여기서 require
까지 이 코드를 포함합니다.동시에 서비스에서 비공개 구성 플래그를 추가하여 영향력을 추적할 수도 있습니다. 예를 들어 컨테이너 변수에
FLAG_ENABLED
가 설정되었는지 여부를 캡처하려면 다음을 수행하십시오.Honeycomb.client.libhoney.add_field('flag_enabled', ENV['FLAG_ENABLED'] == 'true')
특성은 trace/span 사이드바에 표시되며 모든 쿼리에서 사용할 수 있습니다.
동적 데이터
CPU 및 메모리 사용량과 같은 실제 시스템 지표의 경우 libhoney은 빌더를 제공하고 dynamic fields ( API docs ). 동적 필드는 각 기간이 시작될 때[ 1 ] 평가되고 Honeycomb으로 전송되는 필드에 추가됩니다.
현재 Resident Set Size(RSS, "사용 중인 메모리")에 액세스하려면 get_process_mem gem을 사용합니다.
require 'get_process_mem'
Honeycomb.client.libhoney.add_dynamic_field('global.memory_inuse_bytes', proc { GetProcessMem.new.bytes.to_i })
프로세스의 총 수명은 시작 시간부터 지금까지의 차이로 계산할 수 있습니다.
start = Time.now
Honeycomb.client.libhoney.add_dynamic_field('global.process_uptime_seconds', proc { Time.now - start }
하트비트 API 호출 후 몇 분 후:
마무리 노트
이 게시물은 메트릭 수집의 첫 번째 시도를 구현하는 동안 작성되었습니다. GCP의 기능과 한계에 대한 이해를 지속적으로 개선함에 따라 수집된 정확한 측정항목을 다시 검토해야 할 것으로 예상됩니다. 예를 들어 Cloud Run에서 디스크에 기록된 데이터는 RAM에 저장되며 서비스의 할당량으로도 계산됩니다. 이것은 결국 계속 지켜봐야 할 것 같습니다.
Honeycomb은 시스템 메트릭을 애플리케이션 이벤트와 별도의 데이터 세트에 보관할 것을 권장합니다. 개발 중에는 현재 서비스에 대한 트래픽이 거의 없으므로 단순화를 위해 모든 것을 전역으로 유지하고 모든 이벤트에 연결합니다. 서비스에 더 많은 트래픽이 발생하면 이를 다시 검토해야 합니다.
Reference
이 문제에 관하여(Honeycomb에 대한 GCP 정보 및 시스템 측정항목 수집), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/puppet/collecting-gcp-info-and-system-metrics-for-honeycomb-1k3n텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)