Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Para obtener información sobre el uso de estas consultas en Azure Portal, consulte tutorial de Log Analytics. Para obtener la API REST, consulte Consulta.
Visualización de códigos de respuesta de error
Clasifica los mensajes de registro por códigos de respuesta HTTP, filtra los registros sin un código de respuesta y resume el recuento de cada código de respuesta a lo largo de una granularidad de tiempo especificada. A continuación, representa un gráfico de columnas para su visualización.
OEPDataplaneLogs
// Categorize messages based on HTTP response codes
| extend ResponseCode = case(
Message has_any ("Status=500", "Internal Server Error"), "500",
Message has_any ("Status=401", "Unauthorized"), "401",
Message has_any ("Status=403", "Forbidden"), "403",
Message has_any ("Status=429", "RequestBodyTooLarge"), "429",
""
)
// Filter out logs without a response code
| where ResponseCode != ""
// Summarize the count of each response code over a specified time range
| summarize Count = count() by bin(TimeGenerated, 5m), ResponseCode
// Render a column chart for visualization
| render columnchart
Análisis de la actividad del usuario en los registros de almacenamiento
Extraiga valores de UserId, filtre los registros para incluir solo los que tienen un UserId y pertenecen a la categoría StorageLogs y comprueba si hay métodos HTTP específicos. A continuación, resume el recuento de registros por usuario a intervalos diarios y representa un gráfico circular para su visualización.
OEPDataplaneLogs
// Extract UserId from the Message field using a regular expression
| extend UserId = extract(@"user-id=([a-zA-Z0-9_-@.]+)", 1, Message)
// Filter out logs without a UserId
| where UserId != ""
// Filter logs to include only those in the "StorageLogs" category
| where Category == "StorageLogs"
// Filter logs to include only those with specific HTTP methods
| where Message has_any (
"GET",
"POST",
"PUT",
"DELETE",
"PATCH",
"HEAD",
"OPTIONS"
)
// Summarize the count of logs per user over daily intervals
| summarize Count = count() by bin(TimeGenerated, 1d), UserId
// Render a pie chart for visualization
| render piechart
Categorización de registros por servicio OSDU
Esta consulta KQL resume el recuento de registros por categoría en las últimas 24 horas y representa un gráfico circular para su visualización.
OEPDataplaneLogs
// Summarize the count of logs by category over the last day
| summarize Count = count() by bin(TimeGenerated, 1d), Category
// Render a pie chart for visualization
| render piechart
Visualización de la actividad del usuario
Extraiga los valores de UserId, filtre los registros sin userId y resuma el recuento de registros por usuario en las últimas 24 horas. Representa un gráfico circular para visualizar la actividad del usuario.
OEPDataplaneLogs
// Extract UserId from the Message field using a regular expression
| extend UserId = extract(@"user-id=([a-zA-Z0-9_-@.]+)", 1, Message)
// Filter out logs without a UserId
| where UserId != ""
// Summarize the count of logs per user over the last day
| summarize Count = count() by bin(TimeGenerated, 1d), UserId
// Render a pie chart to visualize user activity
| render piechart
Visualización de la actividad reciente
Filtra los registros en los últimos 30 minutos, los clasifica por códigos de respuesta HTTP y cuenta el número total de registros y errores. A continuación, resume estos recuentos en intervalos de 15 segundos y representa un gráfico de tiempo para el análisis visual.
OEPDataplaneLogs
// Filter logs to the last 30 minutes
| where TimeGenerated >= ago(30m)
// | extend UserId = extract(@"user-id=([a-zA-Z0-9_-@.]+)", 1, Message) // Uncomment if you want to only display user actions
// | where notempty(UserId) //// Uncomment if you want to only display user actions
// Categorize messages based on HTTP response codes
| extend ResponseCode = case(
Message has_any ("Status=500", "Internal Server Error"), "500",
Message has_any ("Status=401", "Unauthorized"), "401",
Message has_any ("Status=403", "Forbidden"), "403",
Message has_any ("Status=429", "RequestBodyTooLarge"), "429",
""
)
// Mark entries as errors if they match specific response codes
| extend ErrorCount = ResponseCode has_any ("500", "401", "403", "429")
// Summarize total logs and errors in 15-second intervals
| summarize Total = count(), Errors = count(ErrorCount) by bin(TimeGenerated, 15s)
// Render a timechart for visual analysis
| render timechart with (ysplit=axes)
Garantizar la presencia del identificador de correlación
Garantiza que cada entrada de registro tenga un CorrelationId. Si falta CorrelationId, extrae el valor del campo Mensaje mediante una expresión regular.
OEPDataplaneLogs
// Ensure each log entry has a CorrelationId by using the existing one or extracting it from the Message field
| extend CorrelationId = iff(notempty(CorrelationId), CorrelationId, extract(@"correlation-id=([a-zA-Z0-9_-]+)", 1, Message))
Extracción y categorización de códigos de respuesta HTTP
Clasifique los mensajes de registro en función de los códigos de respuesta HTTP. Extiende los datos de registro con una nueva columna denominada ResponseCode y muestra solo los campos pertinentes.
OEPDataplaneLogs
// Define ResponseCodes based on Message content and extends into a separate column.
| extend ResponseCode = case(
Message has_any ("Status=500", "Internal Server Error"), "500", // Internal Server Error
Message has_any ("Status=401", "Unauthorized"), "401", // Unauthorized Access
Message has_any ("Status=403", "Forbidden"), "403", // Forbidden Access
Message has_any ("Status=429", "RequestBodyTooLarge"), "429", // Request Body Too Large
Message has_any ("Status=200", "200 OK"), "200", // Successful Request
Message has "Status=201", "201", // Resource Created
"" // Default case if no match
)
//
// Displays only relevant columns
//
| project TimeGenerated, Category, Message, LogLevel, CorrelationId, ResponseCode