Sobes.tech
Назад к вопросам
Middle
10

Есть ли опыт по парсингу логов? Сможешь написать что-то для поиска событий в логах Nginx?

Компании, где спрашивали
Магнит Тех

Ответ от нейросети

sobes.tech AI

Да, есть опыт парсинга логов. Для поиска событий в логах Nginx можно написать простой скрипт на Go, который будет читать файл лога и фильтровать строки по заданному условию.

Пример: поиск всех запросов с кодом ответа 500 (ошибка сервера).

package main

import (
    "bufio"
    "fmt"
    "os"
    "strings"
)

func main() {
    file, err := os.Open("/var/log/nginx/access.log")
    if err != nil {
        panic(err)
    }
    defer file.Close()

    scanner := bufio.NewScanner(file)
    for scanner.Scan() {
        line := scanner.Text()
        // Предположим, что код ответа - это 9-й элемент, разделенный пробелами
        parts := strings.Fields(line)
        if len(parts) > 8 && parts[8] == "500" {
            fmt.Println(line)
        }
    }

    if err := scanner.Err(); err != nil {
        panic(err)
    }
}

Этот код открывает лог, читает его построчно и выводит только те строки, где HTTP-статус равен 500. Аналогично можно искать другие события, например, по IP, времени или URL.