diff --git a/cookbooks/nomad/setup.rb b/cookbooks/nomad/setup.rb index 3738843..d18026f 100644 --- a/cookbooks/nomad/setup.rb +++ b/cookbooks/nomad/setup.rb @@ -67,3 +67,15 @@ service 'nomad' do action [:enable, :start] end +# Deploy `promtail` config: +HOSTNAME = run_command('uname -n').stdout.chomp + +template '/etc/promtail/nomad.yaml' do + owner 'root' + group 'root' + mode '644' + + variables(HOSTNAME: HOSTNAME, LOKIENDPOINT: node['nomad']['lokiendpoint']) + + notifies :restart, 'service[promtail-nomad]' +end diff --git a/cookbooks/nomad/templates/etc/promtail/nomad.yaml b/cookbooks/nomad/templates/etc/promtail/nomad.yaml new file mode 100644 index 0000000..b43a0e9 --- /dev/null +++ b/cookbooks/nomad/templates/etc/promtail/nomad.yaml @@ -0,0 +1,88 @@ +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\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d+\+\d{4}) \[(?P[^\]]+)\] +(?P.*)$' + + - 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[^\]]+)\] +(?P.*) task=(?P[^ ]+) .* timestamp=(?P\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\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}\+\d{4}) \[(?P[^\]]+)\] +(?P.*) task=(?P.*) reason="(?P.*)"$' + + - 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