Локи не оповещает Alertmanager

Я новичок в Loki и сделал предупреждение в Loki, но я не вижу никаких уведомлений в Alertmanager. Loki работает нормально (сбор журналов), Alertmanager также (получение предупреждений из других источников), но журналы из loki не отправляются в alertmanager.

Конфигурация Локи:

auth_enabled: false

server:
  http_listen_port: 3100

ingester:
  lifecycler:
    address: 127.0.0.1
    ring:
      kvstore:
        store: inmemory
      replication_factor: 1
    final_sleep: 0s
  chunk_idle_period: 1h       # Any chunk not receiving new logs in this time will be flushed
  max_chunk_age: 1h           # All chunks will be flushed when they hit this age, default is 1h
  chunk_target_size: 1048576  # Loki will attempt to build chunks up to 1.5MB, flushing first if chunk_idle_period or max_chunk_age is reached first
  chunk_retain_period: 30s    # Must be greater than index read cache TTL if using an index cache (Default index read cache TTL is 5m)
  max_transfer_retries: 0     # Chunk transfers disabled

schema_config:
  configs:
    - from: 2020-10-24
      store: boltdb-shipper
      object_store: filesystem
      schema: v11
      index:
        prefix: index_
        period: 24h

storage_config:
  boltdb_shipper:
    active_index_directory: /loki/boltdb-shipper-active
    cache_location: /loki/boltdb-shipper-cache
    cache_ttl: 24h         # Can be increased for faster performance over longer query periods, uses more disk space
    shared_store: filesystem
  filesystem:
    directory: /loki/chunks

compactor:
  working_directory: /loki/boltdb-shipper-compactor
  shared_store: filesystem

limits_config:
  reject_old_samples: true
  reject_old_samples_max_age: 168h

chunk_store_config:
  max_look_back_period: 0s

table_manager:
  retention_deletes_enabled: false
  retention_period: 0s

ruler:
  storage:
    type: local
    local:
      directory: etc/loki/rules
  rule_path: /etc/loki/
  alertmanager_url: http://171.11.3.160:9093
  ring:
    kvstore:
      store: inmemory
  enable_api: true

Docker-compose Loki:

 loki:
    image: grafana/loki:2.0.0
    container_name: loki
    ports:
      - "3100:3100"
    volumes:
      - ./loki/etc/local-config.yaml:/etc/loki/local-config.yaml
      - ./loki/etc/rules/rules.yaml:/etc/loki/rules/rules.yaml
    command:
      -  '--config.file=/etc/loki/local-config.yaml'

Правила Локи:

groups:
  - name: rate-alerting
    rules:
    - alert: HighLogRate
      expr: |
           count_over_time(({job="grafana"})[1m]) >=0
      for: 1m

Кто-нибудь знает, в чем проблема?


person Luka Zovko    schedule 22.04.2021    source источник


Ответы (1)


Конфиг выглядит неплохо, похож на мой. Я бы устранил это, выполнив следующие действия:

  1. Выполните в контейнере докеров и проверьте, не пуст ли файл правил cat /etc/loki/rules/rules.yaml

  2. Проверь логи локи. Когда правила загружены правильно, появятся такие журналы:

level=info ts=2021-05-06T11:18:33.355446729Z caller=module_service.go:58 msg=initialising module=ruler
level=info ts=2021-05-06T11:18:33.355538059Z caller=ruler.go:400 msg="ruler up and running"
level=info ts=2021-05-06T11:18:33.356584674Z caller=mapper.go:139 msg="updating rule file" file=/data/loki/loki-stack-alerting-rules.yaml
  1. Во время выполнения loki также регистрирует информационные сообщения о вашем правиле (я покажу вам то, что я использую, но немного в сокращенном виде) (обратите внимание на status=200 и непустое bytes=...):
level=info 
ts=... 
caller=metrics.go:83 
org_id=... 
traceID=... 
latency=fast 
query="sum(rate({component=\"kube-apiserver\"} |~ \"stderr F E.*failed calling webhook \\\"webhook.openpolicyagent.org\\\". an error on the server.*has prevented the request from succeeding\"[1m])) > 1" 
query_type=metric 
range_type=instant 
length=0s 
step=0s 
duration=9.028961ms 
status=200 
throughput=40MB 
total_bytes=365kB
  1. Затем убедитесь, что вы можете получить доступ к alertmanager http://171.11.3.160:9093 из контейнера локи без каких-либо проблем (там может быть проблема с сетью, или вы настроили базовую аутентификацию и т. д.).

  2. Если установленное вами правило (которое вы можете проверить в окне исследования Grafana) превысит установленный вами порог на 1 минуту, предупреждение должно появиться в alertmanager. Скорее всего, он будет разгруппирован, поскольку вы не добавляли к нему никаких ярлыков.

person Lirt    schedule 06.05.2021
comment
№2. У меня есть первые 2, но не 3-е сообщение .... также я получил следующее: level = info ts = 2021-05-06T13: 30: 30.785641801Z caller = mapper.go: 46 msg = очистка каталога сопоставленных правил путь = / etc / loki / level = warn ts = 2021-05-06T13: 30: 30.785842108Z caller = mapper.go: 40 msg = невозможно удалить каталог пользователя путь = / etc / loki / rules err = unlinkat / etc / loki / rules / rules.yaml: в разрешении отказано - person Luka Zovko; 06.05.2021
comment
Хорошо, теперь это имеет смысл. rule_path, как в примере официальной документации, должен быть только временным каталогом. Локи хочет убрать его перед запуском. Поэтому я бы рекомендовал использовать что-то вроде /tmp/loki-rules-scratch. /tmp также должен быть доступен для записи для пользователя докера (обычно это по умолчанию). - person Lirt; 06.05.2021
comment
Все еще не работает ... - person Luka Zovko; 06.07.2021
comment
level = info ts = 2021-07-06T13: 26: 48.487492664Z caller = module_service.go: 59 msg = initializing module = ruler level = info ts = 2021-07-06T13: 26: 48.487521262Z caller = ruler.go: 434 msg = линейка запущена и работает - person Luka Zovko; 06.07.2021