Promtail Pipelines

Auf dieser Seite finden sich gesammelte Vorlagen für Pipelines.

Dies sind lediglich Vorlagen und können abweichen, wenn die Konfiguration für das Loggen geändert wurde oder eine andere Software-Version eine andere Syntax loggt!

Bei der Vergabe von label ist insbesondere die Arbeitsweise von Loki zu beachten:

Dynamische Labels sind zu unterlassen, um eine unnötig hohe Kardinalität zu vermeiden.

Siehe auch:

Wenn bereits Daten gesammelt wurden, bietet das Tool logcli eine gute Orientierung:

logcli-linux-amd64 series --analyze-labels {}

Im folgenden Beispiel sollten einige Labels (mindestens request und remote_addr) überdacht werden, da diese dynamische Werte haben können, die bspw. durch anfragende Clients belegt werden (potenziell sehr viele verschiedene Werte). Alternativ wäre auch thread ein guter Kandidat.

Total Streams:  9428
Unique Labels:  21

Label Name         Unique Values  Found In Streams
request            5936           5971
systemd_unit       895            3130
thread             177            196
remote_addr        63             6050
http_user_agent    23             5971
host               18             9428
syslog_identifier  18             3156
logger             10             196
filename           8              6272
status             8              6050
job                7              9427
level              7              3350
app                6              9428
project            6              9428
f_end              5              79
b_server           5              79
b_end              5              79
part               4              3372
stage              3              9428
method             2              5971
component          1              1

INUBIT

Trace

pipeline_stages:
  - match:
      selector: '{app="inubit", part="tomcat"}'
      stages:
        - multiline:
            firstline: '^\d{2}-\w+-\d{4} \d{2}:\d{2}:\d{2}\.\d{3}?'
            max_wait_time: 3s
            max_lines: 512
        - regex:
            expression: '(?P<local_time>\d{2}-\w+-\d{4} \d{2}:\d{2}:\d{2}\.\d{3}) (?P<level>\w+) \[(?P<thread>\w+)\] (?P<logger>[\w\d.]+) (?P<msg>(?s:.*))?'
        - labels:
            level:
            thread:
            logger:

BPC

Karaf

pipeline_stages:
    - match:
        selector: '{app="bpc", part="karaf"}'
        stages:
            - multiline:
                firstline: '^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2},\d{3}?'
                max_wait_time: 3s
                max_lines: 512
            - regex:
                expression: '^(?P<time>\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2},\d{3}) \| (?P<level>[\w]{1,5})\s+\| (?P<action>\S+) \| (?P<component>\S+)\s+\| (?P<bundle_id>\d+) \- (?P<bundle_name>\S+) \- (?P<bundle_version>[\d.]+) \| (?P<msg>(?s:.*))?'
            - labels:
                level:
                node:
                component:

Elasticsearch

pipeline_stages:
    - match:
        selector: '{app="haproxy"}'
        stages:
          - regex:
              expression: '^(?P<local_time>\w+\s+\d+ [\d\d:]+:\d\d) (?P<host>\w+) (?P<process>\w+)\[(?P<pid>\d+)\]: (?P<remote_addr>[\w\.]+):(?P<remote_port>\d+) \[(?P<time>.*)\] (?P<f_end>[\w\~\-]+) (?P<b_end>[\w-]+)\/(?P<b_server>[<>\w\.-]+) (?P<tq>[\d\-]+)\/(?P<tw>[\d\-]+)\/(?P<tc>[\d\-]+)\/(?P<tr>[\d\-]+)\/(?P<tt>[\d\-]+) (?P<status>\d+) (?P<bytes>\d+) (?P<req_cookie>\S?) (?P<res_cookie>\S?) (?P<t_state>[\w\-]+) (?P<actconn>\d+)\/(?P<feconn>\d+)\/(?P<beconn>\d+)\/(?P<srv_conn>\d+)\/(?P<retries>\d+) (?P<srv_queue>\d+)\/(?P<backend_queue>\d+) \{?(?P<req_headers>[^}"]*)\}? ?"(?P<request>[^"]*)"?'
          - labels:
              f_end:
              b_end:
              b_server:
              status:

HAProxy

pipeline_stages:
    - match:
        selector: '{app="haproxy"}'
        stages:
          - regex:
              expression: '^(?P<local_time>\w+\s+\d+ [\d\d:]+:\d\d) (?P<host>\w+) (?P<process>\w+)\[(?P<pid>\d+)\]: (?P<remote_addr>[\w\.]+):(?P<remote_port>\d+) \[(?P<time>.*)\] (?P<f_end>[\w\~\-]+) (?P<b_end>[\w-]+)\/(?P<b_server>[<>\w\.-]+) (?P<tq>[\d\-]+)\/(?P<tw>[\d\-]+)\/(?P<tc>[\d\-]+)\/(?P<tr>[\d\-]+)\/(?P<tt>[\d\-]+) (?P<status>\d+) (?P<bytes>\d+) (?P<req_cookie>\S?) (?P<res_cookie>\S?) (?P<t_state>[\w\-]+) (?P<actconn>\d+)\/(?P<feconn>\d+)\/(?P<beconn>\d+)\/(?P<srv_conn>\d+)\/(?P<retries>\d+) (?P<srv_queue>\d+)\/(?P<backend_queue>\d+) \{?(?P<req_headers>[^}"]*)\}? ?"(?P<request>[^"]*)"?'
          - labels:
              f_end:
              b_end:
              b_server:
              status: