Ruby on Rails structured event analytics로 이벤트 전송 및 확인
제어된 애플리케이션 경계에서 Ruby on Rails structured event analytics를 사용하고, 이벤트 계약을 작게 유지하고, 집계 뷰를 구축하기 전에 알려진 결과를 확인하세요.
- 1
결과를 선택하세요
레일스 요청 모니터링
- 2
계약 정의
controller_action, method 및 관측된 status_code
- 3
결과에서 방출
이 구독자는 process_action.action_controller를 관측합니다. Active Job, 정적 파일, 미들웨어에서만 처리한 응답 또는 전체 Rack 요청은 계측하지 않습니다.
- 4
증거를 확인하세요
Exercise a known fixture, then inspect api_request_completed for one correctly typed terminal row.
시작하기 전에
시작하기 전에
- 쓰기 권한이 있는 서버 측 TELEMETRY_API_KEY
- 이 예제를 config/initializers/telemetry_requests.rb에 넣고 프로세스마다 한 번 등록하세요
- ActiveSupport::Notifications.monotonic_subscribe를 제공하는 Rails
배송 설정
서버 측 설치 및 초기화
서버 측 키와 명시적인 열기 및 읽기 시간 제한이 있는 작은 Net::HTTP 래퍼를 사용합니다. 브라우저 번들, 클라이언트에 표시되는 환경 변수, 소스 제어, 로그 및 예외 메시지에서 수집 자격 증명을 유지하세요.
- 1제한된 네트워크 동작을 갖춘 재사용 가능한 서버 측 전달 클라이언트 하나를 준비합니다.
- 2성공, 실패, 재시도 또는 시간 초과 경계에 결과 이벤트를 추가합니다.
- 3알림을 활성화하기 전에 제어된 고정 장치를 보내고 저장된 행을 검사하십시오.
스니펫
하나의 체계적인 이벤트로 시작하세요
워크플로가 완료, 실패 또는 재시도되는 위치에 이 셰이프를 추가합니다. 그런 다음 실제 필드에서 대시보드를 구축합니다.
Ruby on Rails structured event analytics 이벤트
# config/initializers/telemetry_requests.rb
require "json"
require "net/http"
require "uri"
module TelemetryRailsRequests
def self.delivery_failed
warn "Telemetry request event delivery failed."
rescue StandardError
# Diagnostics must not change the application result either.
end
def self.log(fields)
key = ENV["TELEMETRY_API_KEY"]
return if key.nil? || key.empty?
uri = URI("https://api.telemetry.sh/log")
request = Net::HTTP::Post.new(uri)
request["Authorization"] = key
request["Content-Type"] = "application/json"
request.body = { table: "api_request_completed", data: fields }.to_json
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.open_timeout = 1
http.read_timeout = 1
http.write_timeout = 1
http.max_retries = 0
response = http.start { |client| client.request(request) }
delivery_failed unless response.is_a?(Net::HTTPSuccess)
rescue StandardError
delivery_failed
end
end
ActiveSupport::Notifications.monotonic_subscribe(
"process_action.action_controller"
) do |_name, started, finished, _id, payload|
status = payload[:status]
status = nil unless status.is_a?(Integer) && (100..599).cover?(status)
TelemetryRailsRequests.log({
controller_action: "#{payload[:controller]}##{payload[:action]}",
method: payload[:method],
status_code: status,
status: status ? "http_#{status / 100}xx" : "unknown",
exception_observed: !!payload[:exception],
latency_ms: ((finished - started) * 1000).round(2)
})
rescue StandardError
TelemetryRailsRequests.delivery_failed
end이벤트 스키마
controller_action, method 및 관측된 status_code
HTTP 상태 분류, exception_observed 및 컨트롤러 latency_ms
요청 매개변수, 원시 경로, 헤더, 사용자 식별자 또는 예외 메시지는 포함하지 않습니다
설정 확인하기
체크포인트 1
이 구독자는 process_action.action_controller를 관측합니다. Active Job, 정적 파일, 미들웨어에서만 처리한 응답 또는 전체 Rack 요청은 계측하지 않습니다.
체크포인트 2
HTTP 상태 분류는 관측된 컨트롤러 응답을 나타내며 비즈니스 성공이나 사용자에게 전달되었음을 뜻하지 않습니다. 상태가 없으면 알 수 없음으로 유지합니다.
체크포인트 3
지연 시간은 컨트롤러 알림의 단조 시계 구간을 사용하며 이 구독자의 HTTP 내보내기 시간은 제외합니다.
체크포인트 4
내보내기는 동기식 최선 노력 방식이며 연결, 읽기, 쓰기 제한 시간은 각각 1초입니다. 이 소켓 제한 시간은 엄격한 총 시간 한도가 아니며 전송은 요청 지연을 늘립니다.
체크포인트 5
전송, 2xx가 아닌 응답, 인코딩 및 진단 실패를 격리하여 컨트롤러 결과나 원래 예외를 바꾸지 않습니다. 키가 없으면 내보내기를 건너뜁니다.
체크포인트 6
큐, 영속 전달, 내보내기 재시도 또는 종료 시 비우기 기능은 없습니다. 이벤트 손실을 허용할 수 없다면 애플리케이션이 관리하는 아웃박스를 사용하세요.
검증
이벤트가 도착했음을 증명하세요.
알려진 성공 및 실패 사례를 연습한 후 이를 실행하십시오. 최종 이벤트 계약이 스니펫과 다른 경우 대체 테이블 이름을 바꾸세요.
Ruby on Rails structured event analytics 확인 쿼리
SELECT *
FROM api_request_completed
ORDER BY timestamp_utc DESC
LIMIT 20;구현 참조
새로운 프로덕션 경로를 활성화하기 전에 이벤트 계약, 데이터 안전 지침, 업스트림 기본 문서를 검토하세요.
이벤트를 기록할 위치
결과 이벤트를 작고 복구 가능하게 유지
이 패턴은 다음을 제공합니다.
- 업스트림 워크플로우 옆에 제한된 SQL 지원 결과가 있습니다.
- 대시보드, 알림 및 교차 이벤트 상관 관계를 위한 안정적인 필드입니다.
- 성공, 실패, 재시도 및 시간 초과 동작을 검증하기 위한 고정 장치 기반 경로입니다.
이 패턴은 제공하지 않습니다
- OTLP 내보내기, 자동 수집 파이프라인 또는 자세한 추적 및 진단 로그를 대체합니다.
- 페이로드에 이벤트 ID가 포함되어 있기 때문에 정확히 한 번만 전달됩니다.
- 원시 공급자 페이로드, 사용자 콘텐츠, 자격 증명 또는 규제 데이터를 수집할 수 있는 권한입니다.
이벤트 스키마 예제
이 워크플로의 이벤트 스키마
쿼리 또는 스니펫을 프로덕션에 적용하기 전에 행 그레인, 방출 경계, 필수 유형, 개인 정보 보호 클래스, 예제 페이로드 및 유효성 검사 체크리스트를 검토하세요.
관련 제품 기능
이 워크플로를 다음에서 계속하세요. 대시보드
검증된 제품 또는 수익 쿼리를 집중적인 의사 결정 표면으로 전환하세요.
관련 SQL 레시피
더 많은 SQL 예제
이 워크플로의 구조화된 필드에 대해 쿼리를 실행하고, 예제 결과를 검사하고, 유용한 답변을 대시보드 또는 알림으로 전환하세요.
이 통합과 페어링할 템플릿
더 많은 통합
Supabase 및 Postgres 앱 Telemetry
제품 워크플로, 데이터베이스 인접 작업, API 경로 및 서버 코드에서 고객이 직면한 오류를 추적합니다.
가이드 열기Laravel 구조적 로깅 및 대기열 분석
애플리케이션 비밀이나 페이로드를 노출하지 않고 Laravel 요청, 명령, 대기열 및 청구 결과를 타입이 지정된 이벤트로 보냅니다.
가이드 열기애저 함수 Telemetry
호출, 재시도, 대기 시간, 릴리스 및 고객 영향 컨텍스트를 통해 Azure Functions HTTP, 타이머, 큐 및 이벤트 트리거 결과를 추적합니다.
가이드 열기