Condividi tramite


Query per la tabella OEPDataplaneLogs

Per informazioni sull'uso di queste query nel portale di Azure, vedere Guida di Log Analytics. Per l'API REST, vedere Query.

Visualizzazione dei codici di risposta degli errori

Classificare i messaggi di log in base ai codici di risposta HTTP, escludere i log senza un codice di risposta e riepilogare il conteggio di ogni codice di risposta in base a una granularità temporale specificata. Esegue quindi il rendering di un grafico a colonne per la visualizzazione.

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

Analisi dell'attività utente nei log di archiviazione

Estrarre i valori UserId, filtrare i log in modo da includere solo quelli con userId e appartenenti alla categoria StorageLogs e verifica la presenza di metodi HTTP specifici. Riepiloga quindi il numero di log per utente a intervalli giornalieri ed esegue il rendering di un grafico a torta per la visualizzazione.

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

Categorizzazione dei log per servizio OSDU

Questa query KQL riepiloga il numero di log per categoria nelle ultime 24 ore e crea un grafico a torta per la visualizzazione.

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

Visualizzazione dell'attività utente

Estrarre i valori UserId, escludere i log senza UserId e riepilogare il numero di log per utente nelle ultime 24 ore. Genera un grafico a torta per visualizzare l'attività dell'utente.

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

Visualizzazione dell'attività recente

Filtra i log negli ultimi 30 minuti, li classifica in base ai codici di risposta HTTP e conta il numero totale di log ed errori. Riepiloga quindi questi conteggi in intervalli di 15 secondi ed esegue il rendering di un diagramma temporale per l'analisi visiva.

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)

Verifica della presenza dell'ID di correlazione

Assicura che ogni voce di log abbia un CorrelationId. Se CorrelationId manca, estrae il valore dal campo Messaggio usando un'espressione regolare.

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))

Estrazione e categorizzazione dei codici di risposta HTTP

Classificare i messaggi di log in base ai codici di risposta HTTP. Estende i dati di log con una nuova colonna denominata ResponseCode e visualizza solo i campi pertinenti.

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