Ответ
В Kibana для фильтрации логов используется KQL (Kibana Query Language) или Lucene-синтаксис в строке запроса.
Базовые примеры KQL-запросов:
| Цель | Пример запроса KQL | Пояснение |
|---|---|---|
| Поиск по полю | status: 200 |
Логи, где поле status равно 200. |
| Поиск по тексту | message: "TimeoutException" |
Логи, содержащие точную фразу. |
| Логическое И | status >= 400 AND service: "auth-service" |
Ошибки (4xx/5xx) от конкретного сервиса. |
| Логическое ИЛИ | level: "error" OR level: "fatal" |
Логи уровня error или fatal. |
| Отрицание | NOT level: "debug" |
Исключить все debug-логи. |
| Регулярное выражение | message: /failed after d+ attempts/ |
Поиск по паттерну. |
Работа с временными интервалами:
- Используйте панель выбора времени (Time Picker) для фильтрации по абсолютному или относительному диапазону (например, "Last 1 hour").
Сложный практический пример: Запрос для поиска ошибок 5xx в Nginx за последние 15 минут, исключая тестовое окружение:
response >= 500 AND component:"nginx" AND NOT environment:"test"
- Часто используемые фильтры можно сохранять.
- Для постоянного мониторинга создавайте визуализации (Visualizations) и добавляйте их на дашборды (Dashboards).
Ответ 18+ 🔞
А, ну вот, смотри, опять эти ваши логи, как говна в проруби. Разбираться надо, а ты нихуя не понимаешь, как их отфильтровать. Kibana, блядь, как шкаф Икеевский — вроде просто, а инструкция на хуй никому не понятна. Слушай сюда, сейчас разжую.
В этой вашей Кибане есть две основные приблуды для поиска: KQL (Kibana Query Language) — это их родной, более умный язык, и старый добрый Lucene-синтаксис, который как дед в подвале — сидит и иногда нужен.
Вот тебе база, чтобы не выглядеть конченым идиотом:
| Что хочешь сделать | Как написать на KQL | Что это значит, блядь? |
|---|---|---|
| Найти по значению поля | status: 200 |
Ищешь логи, где в поле status красуется циферка 200. Всё, просто. |
| Найти по тексту | message: "TimeoutException" |
Ищешь логи, где в сообщении есть эта самая точная фраза. Без вариантов. |
| Логическое «И» (оба условия) | status >= 400 AND service: "auth-service" |
Найти всё, где статус ошибки (400 и выше) И сервис называется «auth-service». Двойной отбор, мать его. |
| Логическое «ИЛИ» (хотя бы одно) | level: "error" OR level: "fatal" |
Тащи сюда всё, что уровня «error» ИЛИ «fatal». Хули мелочиться. |
| Исключить что-то | NOT level: "debug" |
Всё покажи, кроме этого дебагового мусора. Чтобы глаза не ебало. |
| Поиск по шаблону (регулярки) | message: /failed after d+ attempts/ |
Ищи сообщения, где есть «failed after», а потом какое-то количество цифр (это d+) и «attempts». Для продвинутых ебанатов. |
Про время, ёпта! Не выёбывайся со временем в запросе, если не хочешь запудрить себе мозги. Сверху есть удобная хуйня — Time Picker. Ткнул на «Last 15 minutes» и всё, логи за последние 15 минут. Не надо изобретать велосипед.
А вот реальный пример из жизни, чтобы ты проникся: Допустим, накрылся твой Nginx, сыпет 500-ми ошибками. Но ты не хочешь видеть срач из тестового стенда. Пишешь так:
response >= 500 AND component:"nginx" AND NOT environment:"test"
Вот и весь сказ. Ищет где ответ >=500, компонент — nginx, и при этом окружение НЕ «test». Чисто, аккуратно, в рот меня чих-пых.
И запомни, чувак: если фильтр получается годный и ты его будешь юзать чаще, чем руку, — сохрани его, блядь! А для начальства, чтобы они видели красивые графики и не ебали тебя мозг, лепи визуализации (Visualizations) и сваливай их все на один дашборд (Dashboard). Сидишь, кофе пьёшь, на графики смотришь — красота, а не работа.