Показать страницуИстория страницыСсылки сюдаCopy this pageExport to MarkdownODT преобразованиеНаверх Вы загрузили старую версию документа! Сохранив её, вы создадите новую текущую версию с этим содержимым. Медиафайлы{{tag>[loki docker swarm promtail grafana monitoring fluentd fluent-bit prometheus}} ====== loki ====== ===== Настройка ===== <code yaml> auth_enabled: false server: http_listen_port: 3100 common: instance_addr: 127.0.0.1 path_prefix: /loki storage: filesystem: chunks_directory: /loki/chunks rules_directory: /loki/rules replication_factor: 1 ring: kvstore: store: inmemory schema_config: configs: - from: 2020-10-24 store: tsdb object_store: filesystem schema: v13 index: prefix: index_ period: 24h ruler: alertmanager_url: http://localhost:9093 limits_config: retention_period: 720h reject_old_samples: true reject_old_samples_max_age: 720h allow_structured_metadata: true max_query_length: 721h ingester: lifecycler: ring: kvstore: store: inmemory replication_factor: 1 final_sleep: 0s chunk_idle_period: 1h max_chunk_age: 1h chunk_target_size: 1048576 chunk_retain_period: 30s table_manager: retention_deletes_enabled: true retention_period: 720h </code> ===== Индексы ===== * 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>СохранитьПросмотрРазличияОтменить Сводка изменений Примечание: редактируя эту страницу, вы соглашаетесь на использование своего вклада на условиях следующей лицензии: CC0 1.0 Universal