Hi, I’m using loki 2.6.1 on a single standalone node, with a config based closely on
cmd/loki/loki-local-config.yaml. Here it is in full:
auth_enabled: false server: http_listen_port: 3100 grpc_listen_port: 9096 common: path_prefix: /var/lib/loki storage: filesystem: chunks_directory: /var/lib/loki/chunks rules_directory: /var/lib/loki/rules replication_factor: 1 ring: instance_addr: 127.0.0.1 kvstore: store: inmemory schema_config: configs: - from: 2020-10-24 store: boltdb-shipper object_store: filesystem schema: v11 index: prefix: index_ period: 24h ruler: alertmanager_url: http://localhost:9093/alertmanager compactor: retention_enabled: true limits_config: retention_period: 91d enforce_metric_name: false reject_old_samples: true reject_old_samples_max_age: 168h analytics: reporting_enabled: false
When loki starts, it logs the following message:
Oct 11 18:39:55 srv1 loki-linux-amd64: level=error ts=2022-10-11T18:39:55.887270979Z caller=mapper.go:50 msg="unable to read rules directory" path=/var/lib/loki/rules-temp err="open /var/lib/loki/rules-temp: no such file or directory"
My question is: why is it even trying to access
/var/lib/loki/rules-temp, when the config points to
If I start with an empty
/var/log/loki directory, then various subdirectories are created automatically under there, including “rules”, but not “rules-temp”.
Looking at the documentation for the “ruler” block, it seems there are at least two other storage paths that can be set. The following example is provided:
ruler: storage: type: local local: directory: /tmp/rules <<<<<<< rule_path: /tmp/scratch <<<<<<< alertmanager_url: http://localhost ring: kvstore: store: inmemory enable_api: true
Can someone please explain what these two settings do, and how they interact with the common.storage.filesystem.rules_directory setting?
P.S. I found GH#3952, which was a similar issue using the docker image, but the solution made to that issue was simply to mkdir the
/loki/rules-temp directory instead of