Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
software:fluent-bit-loki-grafana:loki [2025/11/24 14:12] – создано mirocowsoftware:fluent-bit-loki-grafana:loki [2025/11/25 01:45] (текущий) mirocow
Строка 1: Строка 1:
-====== Loki ======+{{tag>[loki docker swarm promtail grafana monitoring fluentd fluent-bit prometheus}}
  
-<code>+====== loki ====== 
 + 
 +===== Настройка ===== 
 + 
 +<code yaml>
 auth_enabled: false auth_enabled: false
  
Строка 54: Строка 58:
   retention_deletes_enabled: true   retention_deletes_enabled: true
   retention_period: 720h   retention_period: 720h
 +</code>
 +
 +  * Менеджер TSDB используется для периодической (раз в 15 минут) сборки индексов TSDB из накопившихся WAL’ов. В случае успеха он ротирует старые TSDB Head и WAL, удаляя их для освобождения диска с памятью и заменяя пустышками, — это предотвращает неограниченный рост менее эффективных блоков и замещает их на свежесобранную TSDB.
 +
 +===== Индексы =====
 +
 +  * TSDB — это высокопроизводительные базы данных, которые позволяют запрашивать стримы и чанки по их лейблам. Однако они неизменяемы (immutable) и должны быть собраны до того, как к ним можно будет обращаться.
 +
 +====== Loki фильтры ======
 +
 +
 +Взять любые значения и применить к ним фильтр json:
 +
 +<code>
 +{stream=~".+", job=~".*", instance=~".*", cluster=""} | json
 +</code>
 +
 +эквивалент:
 +
 +<code>
 +{stream=~".+"} | json
 +</code>
 +
 +В распарсенном json поискать значения парочки ключей:
 +
 +<code>
 +{stream=~".+"} | json | http_host=`site.ru` | status > 299
 +</code>
 +
 +Вот так я ищу ошибку в monolog:
 +
 +<code>
 +{stream=~".+"} | json | message=`error message`
 +</code>
 +
 +Найти точно по левой части и что-угодно справа:
 +
 +<code>
 +request_uri=~"^/foo(.*)"
 +</code>
 +
 +Найти по части совпадения строки:
 +
 +<code>
 +{stream=~".+"}|~ "(.*)Find and save image problems(.*)"
 +</code>
 +
 +Тоже самое, но сначала распарсить json:
 +
 +<code>
 +{stream=~".+"} | json | message=~`(.*)Uncaught PHP Exception Doctrine(.*)`
 +</code>
 +
 +OR условие:
 +
 +<code>
 +... | json | scheme=`https` | status=~"301|302" [$__auto])))
 +</code>
 +
 +Отрицание:
 +
 +<code>
 +http_referer !~`(http|https)://yapro.ru(.*)`
 +</code>
 +
 +Сформировать строку из разных значений:
 +
 +<code>
 +| line_format "➡️ {{.request_method}} {{.request_uri}} with HTTP status: {{.status}} "
 +</code>
 +
 +
 +
 +<code>
 +sum(count_over_time({app="servicefoundry-server"}[24h]))
 +</code>
 +
 +
 +<code>
 +{namespace="truefoundry", app!="grafana"} |= "[UNIQUE-STATIC-LOG] ID=abc123 XYZ"
 +</code>
 +
 +
 +<code>
 +{app="servicefoundry-server"} |= ":3000"
 +</code>
 +
 +
 +
 +<code>
 +{namespace="truefoundry"} |= "non-existent log line"
 +</code>
 +
 +
 +
 +<code>
 +{namespace="truefoundry"} |= "non-existent log line"
 +</code>
 +
 +
 +
 +<code>
 +
 +</code>
 +
 +
 +
 +<code>
 +{container_name="nextcloud-cron-1"} | json | line_format `{{.log_raw}}`
 +</code>
 +
 +
 +
 +<code>
 +{container_name="nextcloud-cron-1"} | json | line_format `{{.level}}`
 </code> </code>