housekeep-promtail-config-for-nomad #18

Merged
kazu634 merged 6 commits from housekeep-promtail-config-for-nomad into main 2024-04-06 07:31:42 +00:00
6 changed files with 75 additions and 110 deletions

View File

@ -1,4 +1,4 @@
# Log kernel generated promtail log messages to file # Log kernel generated nomad log messages to file
:syslogtag,contains,"nomad" /var/log/nomad.log :syslogtag,contains,"nomad" /var/log/nomad.log
# Uncomment the following to stop logging anything that matches the last rule. # Uncomment the following to stop logging anything that matches the last rule.

View File

@ -0,0 +1,53 @@
data_dir = "/var/lib/vector/"
[sources.nomad]
type = "file"
include = [ "/var/log/nomad.log" ]
ignore_older_secs = 600
read_from = "beginning"
[transforms.nomad_transform]
type = "remap"
inputs = ["nomad"]
source = '''
. |= parse_syslog!(.message)
lv, err = parse_regex(.message, r'(?P<timestamp>\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}\+\d{4}) \[(?P<level>[^\]]+)\] +(?P<message>.*)$')
. = merge(., lv)
del(.host)
.level = downcase!(.level)
'''
[sinks.nomad_output]
type = "file"
inputs = [ "nomad_transform"]
compression = "none"
path = "/tmp/nomad-%Y-%m-%d.log"
[sinks.nomad_output.encoding]
codec = "json"
[sinks.nomad_output.buffer]
max_size = 268435488
type = "disk"
[sinks.nomad_loki]
type = "loki"
inputs = [ "nomad_transform" ]
endpoint = "http://loki.service.consul:3100"
compression = "snappy"
[sinks.nomad_loki.labels]
level = "{{ level }}"
hostname = "{{ hostname }}"
job = "nomad"
filename = "{{ file }}"
[sinks.nomad_loki.encoding]
codec = "json"
[sinks.nomad_loki.buffer]
max_size = 268435488
type = "disk"

View File

@ -1,12 +0,0 @@
[Unit]
Description=Grafana Promtail
Documentation=https://github.com/grafana/loki
After=network-online.target
[Service]
User=root
Restart=always
ExecStart=/usr/local/bin/promtail --config.file=/etc/promtail/nomad.yaml
[Install]
WantedBy=multi-user.target

View File

@ -0,0 +1,16 @@
[Unit]
Description=Vector
Documentation=https://vector.dev
After=network-online.target
Requires=network-online.target
[Service]
ExecStart=/usr/bin/vector --config /etc/vector/nomad.toml
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
StandardOutput=journal
StandardError=journal
SyslogIdentifier=vector
[Install]
WantedBy=multi-user.target

View File

@ -85,28 +85,24 @@ service 'nomad' do
action [:enable, :start] action [:enable, :start]
end end
# Deploy `promtail` config: # Deploy `vector` config:
HOSTNAME = run_command('uname -n').stdout.chomp remote_file '/etc/vector/nomad.toml' do
template '/etc/promtail/nomad.yaml' do
owner 'root' owner 'root'
group 'root' group 'root'
mode '644' mode '644'
variables(HOSTNAME: HOSTNAME, LOKIENDPOINT: node['nomad']['lokiendpoint']) notifies :restart, 'service[vector-nomad]'
notifies :restart, 'service[promtail-nomad]'
end end
# Deploy the `systemd` configuration: # Deploy the `systemd` configuration:
remote_file '/lib/systemd/system/promtail-nomad.service' do remote_file '/lib/systemd/system/vector-nomad.service' do
owner 'root' owner 'root'
group 'root' group 'root'
mode '644' mode '644'
end end
# Service setting: # Service setting:
service 'promtail-nomad' do service 'vector-nomad' do
action [ :enable, :restart ] action [ :enable, :restart ]
end end

View File

@ -1,88 +0,0 @@
server:
disable: true
positions:
filename: /var/opt/promtail/promtail_nomad_position.yaml
clients:
- url: http://<%= @LOKIENDPOINT %>/loki/api/v1/push
scrape_configs:
- job_name: nomad
static_configs:
- targets:
- localhost
labels:
job: nomad
hostname: <%= @HOSTNAME %>
__path__: /var/log/nomad.log
pipeline_stages:
- match:
selector: '{job="nomad"} != "task="'
stages:
- regex:
expression: '^\w+ +[0-9]+ [0-9]+:[0-9]+:[0-9]+ [^ ]+ nomad[^:]+: +(?P<timestamp>\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d+\+\d{4}) \[(?P<level>[^\]]+)\] +(?P<message>.*)$'
- timestamp:
source: timestamp
format: 2006-01-02T15:04:05.000-0700
location: Asia/Tokyo
- template:
source: level
template: '{{ ToLower .level }}'
- labels:
level:
- output:
source: message
- match:
selector: '{job="nomad"} |~ "task=.*timestamp="'
stages:
- regex:
expression: '^\w+ +[0-9]+ [0-9]+:[0-9]+:[0-9]+ [^ ]+ nomad[^:]+: +\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d+\+\d{4} \[(?P<level>[^\]]+)\] +(?P<message>.*) task=(?P<task>[^ ]+) .* timestamp=(?P<timestamp>\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d+\+\d{4})$'
- timestamp:
source: timestamp
format: 2006-01-02T15:04:05.000-0700
location: Asia/Tokyo
- template:
source: level
template: '{{ ToLower .level }}'
- labels:
level:
task:
- output:
source: message
- match:
selector: '{job="nomad"} |~ "task=.*reason="'
stages:
- regex:
expression: '^\w+ +[0-9]+ [0-9]+:[0-9]+:[0-9]+ [^ ]+ nomad[^:]+: +(?P<timestamp>\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}\+\d{4}) \[(?P<level>[^\]]+)\] +(?P<message>.*) task=(?P<task>.*) reason="(?P<reason>.*)"$'
- timestamp:
source: timestamp
format: 2006-01-02T15:04:05.000-0700
location: Asia/Tokyo
- template:
source: msg
template: 'Message={{ .message }} Reason={{ .reason }}'
- template:
source: level
template: '{{ ToLower .level }}'
- labels:
level:
task:
- output:
source: msg