diff --git a/cookbooks/vector/files/etc/systemd/system/vector-consul.service b/cookbooks/vector/files/etc/systemd/system/vector-consul.service new file mode 100644 index 0000000..cc12547 --- /dev/null +++ b/cookbooks/vector/files/etc/systemd/system/vector-consul.service @@ -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/consul.toml +ExecReload=/bin/kill -HUP $MAINPID +Restart=always +StandardOutput=journal +StandardError=journal +SyslogIdentifier=vector + +[Install] +WantedBy=multi-user.target diff --git a/cookbooks/vector/files/etc/vector/consul.toml b/cookbooks/vector/files/etc/vector/consul.toml new file mode 100644 index 0000000..d59184c --- /dev/null +++ b/cookbooks/vector/files/etc/vector/consul.toml @@ -0,0 +1,62 @@ +data_dir = "/var/lib/vector/" + +[sources.consul] + type = "file" + include = [ "/var/log/consul/consul-*.log" ] + ignore_older_secs = 600 + read_from = "beginning" + +[transforms.consul_transform] + type = "remap" + inputs = ["consul"] + source = ''' + dt, err = parse_regex(.message, r'^(?P
\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}\+\d{4}) ') + . = merge(., dt) + + .timestamp = .dt + del(.dt) + + .message = replace!(.message, r'^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}\+\d{4} ', "") + + .hostname = .host + del(.host) + + lv, err = parse_regex(.message, r'\[(?P[^\]]+)\]') + . = merge(., lv) + + .message = replace(.message, r'\[(?P[^\]]+)\] ', "") + + .level = downcase!(.level) + ''' + +[sinks.consul_output] +type = "file" +inputs = [ "consul_transform" ] +compression = "none" +path = "/tmp/consul-%Y-%m-%d.log" + + [sinks.consul_output.encoding] + codec = "json" + + [sinks.consul_output.buffer] + max_size = 268435488 + type = "disk" + +[sinks.consul_loki] +type = "loki" +inputs = [ "consul_transform" ] +endpoint = "http://loki.service.consul:3100" +compression = "snappy" + + [sinks.consul_loki.labels] + level = "{{ level }}" + hostname = "{{ hostname }}" + job = "consul" + filename = "{{ file }}" + + [sinks.consul_loki.encoding] + codec = "json" + + [sinks.consul_loki.buffer] + max_size = 268435488 + type = "disk" diff --git a/cookbooks/vector/setup.rb b/cookbooks/vector/setup.rb index d4d084b..f3c48d3 100644 --- a/cookbooks/vector/setup.rb +++ b/cookbooks/vector/setup.rb @@ -49,6 +49,26 @@ service 'vector-auth' do action [:enable, :start] end +# Deploy config for mointoring `/var/log/consul/consul-*.log`: +remote_file '/etc/vector/consul.toml' do + owner 'root' + group 'root' + mode '0644' + + notifies :restart, 'service[vector-consul]' +end + +remote_file '/etc/systemd/system/vector-consul.service' do + owner 'root' + group 'root' + mode '0644' + + notifies :restart, 'service[vector-consul]' +end + +service 'vector-consul' do + action [:enable, :start] +end # Stop vector default service: service 'vector' do