Media CDN registra cada solicitud HTTP entre el cliente y el perímetro en Cloud Logging. Por lo general, los registros se entregan casi en tiempo real. Esto incluye la posibilidad de realizar consultas en Logging y exportarse a Cloud Storage y Pub/Sub.
Las entradas de registro contienen los siguientes tipos de información:
- Información general que se muestra en la mayoría de los registros de Google Cloud, como la gravedad, el ID del proyecto, el número del proyecto y la marca de tiempo
- Los campos de registro de HttpRequest
Metadatos adicionales sobre la solicitud dentro de structPayload, que incluyen lo siguiente:
- ASN del cliente
- Datos de ubicación del cliente
- ID (ciudad) de las memorias caché que se usaron para cumplir con la respuesta
- nombre de host de SNI de TLS
- Versión usada de TLS
Campos específicos de la caché
El objeto jsonPayload
de un registro de Media CDN contiene metadatos específicos sobre cómo la Media CDN entrega un objeto, si el objeto se almacenó en caché y cualquier estado de error encontrado.
Estos campos, así como los valores de ejemplo, se muestran en la siguiente tabla.
Campo | Valor de ejemplo | Detalles |
---|---|---|
backendInitialLatency | 0.126644940s | La duración que tarda el backend en responder a una solicitud al principio. Se mide desde que la CDN termina de enviar la solicitud al origen mediante proxy hasta que la CDN comience a recibir bytes de respuesta del origen. Este campo solo aparece en los registros del relleno de caché de un recurso |
backendLatency | 0.126666342s | La duración que tarda el backend en responder por completo a una solicitud. Se mide desde el momento en que la CDN termina de enviar la solicitud al proxy hasta que se reciba la respuesta completa del backend. Este campo solo aparece en los registros del relleno de caché de un recurso |
cacheId | MAA-123456 |
El código IATA (aeropuerto) de la ciudad más cercana a la caché y un identificador opaco de la instancia de caché. Si se requieren varios niveles de almacenamiento en caché para entregar la solicitud debido a un error de caché completo o parcial, se proporciona la cadena de ubicaciones de caché, por ejemplo, del-234567, bom-345678, sin-456789 , donde la caché más a la derecha es la más cercana al usuario. |
cacheKeyFingerprint | f63925711b0dd8a9ff861cd303774e6e | Una huella digital opaca de la clave de caché. Las solicitudes que se asignan a la misma clave de caché, por ejemplo, las solicitudes en las que los parámetros de consulta no se incluyen o el host no está incluido, deben tener la misma huella digital. Si la cantidad total de solicitudes es similar a la cantidad total de huellas digitales únicas, puede indicar que las claves de caché son demasiado específicas. |
cacheMode | USE_ORIGIN_HEADERS | El cdnPolicy.cacheMode configurado en la ruta que coincidió con esta solicitud.
|
cacheStatus | Cache hit: Full cache miss: |
El estado de la caché en cada nodo de la caché entre el usuario y el escudo de origen, donde el valor más a la derecha representa la caché más cercana al usuario. |
clientAsn | El ASN (número de sistema autónomo), basado en la dirección IP del cliente que se conecta. | |
clientCity | Mountain View | Nombre de la ciudad desde la que se originó la solicitud, por ejemplo, Mountain View, California. Esto también se puede agregar a los encabezados de solicitud y respuesta, y duplica la variable de encabezado |
clientRegionCode | US | El país (o región) asociado a la dirección IP del cliente. Este es un código de región CLDR de Unicode, como US o FR. En la mayoría de los países, estos códigos corresponden directamente a los códigos ISO-3166-2. Esto también se puede agregar a los encabezados de solicitud y respuesta, y duplica la variable de encabezado |
enforcedSecurityPolicy | La política de seguridad perimetral de Google Cloud Armor que se aplica a la solicitud del cliente. Esto incluye información adicional sobre el nombre, la prioridad y la acción que se realizó. | |
httpTtfb | 0.157228207s | La duración que transcurre desde que el proxy comienza a recibir bytes de solicitud hasta que se envía el primer byte de la respuesta (no se recibe). |
latency | 0.157415635s | El período que transcurre desde que el proxy comienza a recibir bytes de solicitud hasta que termina de escribir la respuesta en el cliente. |
location | El encabezado Location en la respuesta.
|
|
metroIataCode | MAA | El código IATA (aeropuerto) de la ciudad más cercana al proxy. |
origin | El recurso EdgeCacheOrigin del que se envió la respuesta.
|
|
originalRequestId | 19d92668-3948-49d8-9244-25f8252043e4 | El identificador único asignado a la solicitud que generó esta respuesta en un principio.
Se propaga solo si es diferente de request_id para las respuestas almacenadas en caché.
|
originIp | La dirección IP que se usa para comunicarse con el recurso EdgeCacheOrigin desde el que se envió la respuesta mediante proxy.
|
|
proxyRegionCode | US | El país (o región) en el que se encuentra el proxy. Este es un código de región CLDR de Unicode, como US o FR. En la mayoría de los países, estos códigos corresponden directamente a los códigos ISO-3166-2. |
rangeHeader | El encabezado Range en la solicitud.
|
|
requestId | 4bde6381-cd17-47e1-8c2a-1aaa424a1156 | El identificador único que el proxy asignó a la solicitud. |
tlsCipherSuite | 009C | El conjunto de algoritmos de cifrado negociado durante el protocolo de enlace TLS. El valor son cuatro dígitos hexadecimales definidos por el registro del conjunto de algoritmos de cifrado TLS de IANA, por ejemplo, 009C para TLS_RSA_WITH_AES_128_GCM_SHA256. Este valor está vacío para las conexiones de cliente no encriptadas. |
tlsSniHostname | Indicación del nombre del servidor (como se define en RFC 6066), si el cliente la proporciona durante el protocolo de enlace de TLS o QUIC. El nombre de host se pasa a minúsculas y se quita cualquier punto final. | |
tlsVersion | TLS 1.3 | Versión de TLS negociada entre el cliente y la CDN durante el protocolo de enlace SSL. Los valores posibles son TLS 1, TLS 1.1, TLS 1.2 y TLS 1.3. |
Ejemplo de una entrada de registro
A continuación, se proporciona una entrada de registro de ejemplo de una respuesta entregada desde la caché:
{ "insertId": "617fa16e-0000-2ac9-9993-d4f547fe67d4@a1", "jsonPayload": { "@type": "type.googleapis.com/google.cloud.edgecache.v1.EdgeCacheLogEntry", "tlsVersion": "TLS 1.3", "tlsCipherSuite": "009C", // hex digits for the cipher negotiated "cacheId": "maa-132eed13faa13", "clientAsn": "9299", // AS the client is associated with "origin": "example_origin", "clientRegionCode": "IN", "metroIataCode": "bom", "clientCity": "Mumbai", // City name, in English "latency": "0.005105200s", "proxyStatus": "Google-Edge-Cache", "httpTtfb": "0.005056080s", "cacheMode": "FORCE_CACHE_ALL", "cacheKeyFingerprint": "c360ac18849b6336", "cacheStatus": "hit,stale", "enforcedSecurityPolicy": { "outcome": "ACCEPT", "configuredAction": "ACCEPT", "name": "example_policy", "priority": 1000 }, "originalRequestId": "19d92668-3948-49d8-9244-25f8252043e5", "proxyRegionCode": "IN", "requestId": "4bde6381-cd17-47e1-8c2a-1aaa424a1156", "originIp": "74.125.128.128" }, "httpRequest": { "requestMethod": "GET", "requestUrl": "https://example.com/image.jpg", "requestSize": "3545", "status": 200, "responseSize": "3716", "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36", "remoteIp": "62.36.0.43", "protocol": "HTTP/2" }, "resource": { "type": "edgecache.googleapis.com/EdgeCacheRouteRule", "labels": { "matched_path": "/", "path_matcher_name": "routes", "service_name": "example_service", "resource_container": "projects/123456789", "location": "global", "route_destination": "projects/123456789/locations/global/edgeCacheOrigins/example_origin", "route_type": "ORIGIN" } }, "timestamp": "2022-11-19T00:24:13.695328200Z", "logName": "projects/my-project/logs/edgecache.googleapis.com%2Fedge_cache_request", "receiveTimestamp": "2022-11-19T00:24:16.715871645Z" }
Para reducir el volumen de registros y los cargos generales de Logging, los registros se pueden muestrear o filtrar de manera opcional según sea necesario. También puedes enrutar registros a Pub/Sub o BigQuery para analizarlos en Google Cloud o mediante las herramientas de análisis de registros existentes.
Habilitar registros
Logging está inhabilitado de forma predeterminada para minimizar los datos almacenados. Los registros se enrutan, se filtran y se almacenan en Logging.
Para habilitar el registro de un servicio específico de Media CDN, haz lo siguiente:
gcloud edge-cache services update YOUR_SERVICE \ --enable-logging \ --logging-sample-rate=1.0
Para inhabilitar el registro:
gcloud edge-cache services update YOUR_SERVICE \ --no-enable-logging
Para obtener el estado actual del registro en un servicio, ejecuta este comando:
gcloud edge-cache services describe YOUR_SERVICE
El resultado es similar a este:
... logConfig: enable: true sampleRate: 1.0 ...
Registros de muestra
En volúmenes grandes de solicitudes, es posible que prefieras realizar muestras de los registros en lugar de capturar un registro para cada solicitud y depender de las métricas para la supervisión y la investigación proactivas.
Si solo transfieres y almacenas registros para el 10% de tus solicitudes, puedes establecer logConfig.sampleRate
en 0.1
.
gcloud edge-cache services update YOUR_SERVICE \ --enable-logging \ --logging-sample-rate=0.1
El registro debe estar habilitado para cambiar la tasa de muestreo.
La tasa de muestreo, a menos que se especifique lo contrario, se establece de forma predeterminada en 1.0 (100%), que registra todas las solicitudes para el servicio configurado.
Registros de consultas
Para consultar registros, puedes usar el Explorador de registros en la consola de Google Cloud o Google Cloud CLI.
Para ver los registros en la consola de Google Cloud, filtra por tipo de recurso de Media CDN y (de forma opcional) por nombre de proyecto y servicio.
En la siguiente consulta de registro se muestran los registros de todos tus servicios de Media CDN:
resource.type="edgecache.googleapis.com/EdgeCacheRouteRule"
Para filtrar los registros asociados con un proyecto y recurso EdgeCacheService
específicos, puedes extender esta consulta:
resource.type="edgecache.googleapis.com/EdgeCacheRouteRule" resource.labels.resource_container="projects/12345678" resource.labels.service_name="MY_PROJECT"
Para hacer coincidir los nombres parciales o usar expresiones regulares, consulta la documentación sobre la sintaxis de registros.
Ejemplo: Identifica errores de caché
Una solicitud de un objeto puede ser un error de caché y provoca un relleno de caché por varios motivos:
- Un TTL que es demasiado corto
- Una clave de caché demasiado específica
- Muy pocas solicitudes para permanecer almacenadas en caché
Para identificar errores de caché, puedes filtrar los registros en el Explorador de registros.
En la siguiente consulta de registro, se muestran las solicitudes que pueden almacenarse en caché (buscadas), pero que requieren un relleno del origen:
resource.type="edgecache.googleapis.com/EdgeCacheRouteRule" resource.labels.resource_container="projects/12345678" resource.labels.service_name="MY_PROJECT" jsonPayload.cacheStatus="miss"
Si necesitas filtrar por una URL específica, puedes filtrar en el campo httpRequest.requestUrl
:
httpRequest.requestUrl = "URL"
Para filtrar parte de la URL, como el componente de la ruta de acceso, usa el operador has
:
# `:` is the `has` comparison operator httpRequest.requestUrl: "/videos/1381381_1080.mp4" # You can use `OR` or `AND` to filter on multiple values httpRequest.requestUrl: ("https://media-test.example.com/" OR "https://canary.example.net")
Si deseas obtener más información sobre la sintaxis integral de Logging para la coincidencia y el filtrado, consulta la documentación de consultas avanzadas de registros.
Políticas de retención
Logging admite la configuración de políticas de retención personalizadas, que se incluyen por receptor.
Filtra los registros almacenados
Para filtrar registros antes de almacenarlos (por ejemplo, solo capturar campos pertinentes a fin de reducir el volumen de registro total que necesitas almacenar y consultar), puedes configurar reglas de exclusión de registros, que permiten Debes definir una consulta (filtro) que incluya o excluya campos antes del almacenamiento.
También puedes configurar varios filtros, por ejemplo, si se capturan todas las solicitudes de error de caché o todas las solicitudes de un nombre de host específico, y solo se toma una muestra de todos los registros.
Exporta registros
Puedes exportar registros desde Logging si consultas la documentación de la descripción general de las exportaciones de registros, en el que se abarcan los siguientes temas:
- Cómo exportar registros a Cloud Storage o BigQuery
- Exporta a Pub/Sub y consume mediante Cloud Functions o servicios externos
- Agregación de registros en varios proyectos
Media CDN se integra directamente a Logging.
¿Qué sigue?
- Para obtener más información sobre el registro, incluido cómo exportar registros a BigQuery, Pub/Sub o Cloud Storage, consulta la Descripción general del enrutamiento y el almacenamiento.
- Si deseas obtener más información para configurar métricas basadas en registros para definir tus propios valores de métricas según las solicitudes registradas, consulta la Descripción general de las métricas basadas en registros.
- Para obtener más información sobre los precios de Logging, consulta los precios de Google Cloud's operations suite.
- Para obtener información sobre cómo funciona el registro de auditoría y cómo habilitar y configurar los registros de auditoría para la actividad del administrador, consulta la Documentación de los registros de auditoría de Cloud.