this is my config file for the promtail
server:
disable: true
client:
url: http://loki-gateway.loki/loki/api/v1/push
positions:
filename: /tmp/positions.yaml
scrape_configs:
- job_name: grabbers_log
static_configs:
- targets:
- localhost
labels:
job: grabbers_log
pod: ${POD_NAME}
node_name: ${NODE_NAME}
namespace: ${NAMESPACE}
__path__: /var/logs/scrapyd/logs/grabbers/**/*.log
# this will make the folder name as an attribute key
# in loki
relabel_configs:
- source_labels: [__path__]
regex: '/var/logs/scrapyd/logs/grabbers/(.*)/.*' # '.*/grabbers/([^/]+)/.*\.log'
target_label: grabber
everything works, but I can’t get additional label added for the record based on the last folder name, i.e */grabbers/ERA 2024/*
I need a label named grabber=ERA 2024 in loki, but instead I get grabber=** in grafana
Any ideas what am I doing wrong?
You are using __path__
as source, so /var/logs/scrapyd/logs/grabbers/**/*.log
is processed and you get **
in grabbers
from it
filename
should be used as source
to get what you need.
See also this topic
1 Like
so I tried to use the following
relabel_configs:
- source_labels: [__filename__]
regex: '.*/grabbers/([^/]+)/.*\.log'
target_label: grabber
replacement: '$1'
action: replace
and now the label grabbers is not there at all.
ok the working solution:
configMap:
enabled: true
files:
grabbers-log:
promtail.yaml: |-
server:
disable: true
log_level: debug
client:
url: http://loki-gateway.loki/loki/api/v1/push
positions:
filename: /tmp/positions.yaml
scrape_configs:
- job_name: grabbers_log
static_configs:
- targets:
- localhost
labels:
job: grabbers_log
pod: ${POD_NAME}
node_name: ${NODE_NAME}
namespace: ${NAMESPACE}
__path__: /var/logs/scrapyd/logs/grabbers/**/*.log
# this will make the folder name as an attribute key
# in loki so we can query by grabber name
# {job="grabbers_log", grabber="ERA 2024"}
pipeline_stages:
- match:
selector: '{job="grabbers_log"}'
stages:
- regex:
source: filename
expression: '.*\/grabbers\/(?P<grabber>.*)\/.*'
- labels:
grabber: