Send glusterfs logs to loki.
This commit is contained in:
@@ -17,7 +17,10 @@ job "vector" {
|
|||||||
config {
|
config {
|
||||||
image = "timberio/vector:0.28.X-alpine"
|
image = "timberio/vector:0.28.X-alpine"
|
||||||
ports = ["api"]
|
ports = ["api"]
|
||||||
volumes = ["/var/run/docker.sock:/var/run/docker.sock:ro"]
|
volumes = [
|
||||||
|
"/var/run/docker.sock:/var/run/docker.sock:ro",
|
||||||
|
"/var/log/glusterfs:/var/log/glusterfs:ro",
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
env {
|
env {
|
||||||
@@ -48,17 +51,19 @@ job "vector" {
|
|||||||
left_delimiter = "[["
|
left_delimiter = "[["
|
||||||
right_delimiter = "]]"
|
right_delimiter = "]]"
|
||||||
data=<<EOH
|
data=<<EOH
|
||||||
data_dir = "alloc/data/vector/"
|
data_dir = "alloc/data/"
|
||||||
[api]
|
[api]
|
||||||
enabled = true
|
enabled = true
|
||||||
address = "0.0.0.0:8686"
|
address = "0.0.0.0:8686"
|
||||||
playground = false
|
playground = false
|
||||||
[sources.logs]
|
|
||||||
|
[sources.docker_raw]
|
||||||
type = "docker_logs"
|
type = "docker_logs"
|
||||||
[transforms.transformed]
|
[transforms.docker_transformed]
|
||||||
type = "remap"
|
type = "remap"
|
||||||
inputs = [ "logs" ]
|
inputs = [ "docker_raw" ]
|
||||||
source = '''
|
source = '''
|
||||||
|
.node = del(.label."com.hashicorp.nomad.node_name")
|
||||||
.job_name, err = .label."com.hashicorp.nomad.job_name" + "." + .label."com.hashicorp.nomad.task_group_name" + "." + .label."com.hashicorp.nomad.task_name"
|
.job_name, err = .label."com.hashicorp.nomad.job_name" + "." + .label."com.hashicorp.nomad.task_group_name" + "." + .label."com.hashicorp.nomad.task_name"
|
||||||
result = parse_regex_all!(.message, r'^(?P<log>.+) (?P<total_requests>\d+) "(?P<frontend_name>.+)" "(?P<backend_url>.+)" (?P<duration_ms>\d+)ms$')
|
result = parse_regex_all!(.message, r'^(?P<log>.+) (?P<total_requests>\d+) "(?P<frontend_name>.+)" "(?P<backend_url>.+)" (?P<duration_ms>\d+)ms$')
|
||||||
if length(result) > 0 {
|
if length(result) > 0 {
|
||||||
@@ -69,9 +74,24 @@ if length(result) > 0 {
|
|||||||
.total_requests = to_int!(result[0].total_requests)
|
.total_requests = to_int!(result[0].total_requests)
|
||||||
}
|
}
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
[sources.glusterfs_raw]
|
||||||
|
type = "file"
|
||||||
|
include = [ "/var/log/glusterfs/**/*.log" ]
|
||||||
|
host_key = "node"
|
||||||
|
[transforms.glusterfs_transformed]
|
||||||
|
type = "remap"
|
||||||
|
inputs = [ "glusterfs_raw" ]
|
||||||
|
source = '''
|
||||||
|
.node = "[[env "attr.unique.hostname" ]]"
|
||||||
|
'''
|
||||||
|
|
||||||
[sinks.loki]
|
[sinks.loki]
|
||||||
type = "loki"
|
type = "loki"
|
||||||
inputs = ["transformed"]
|
inputs = [
|
||||||
|
"docker_transformed",
|
||||||
|
"glusterfs_transformed"
|
||||||
|
]
|
||||||
endpoint = "http://[[ range service "loki" ]][[ .Address ]]:[[ .Port ]][[ end ]]"
|
endpoint = "http://[[ range service "loki" ]][[ .Address ]]:[[ .Port ]][[ end ]]"
|
||||||
encoding.codec = "json"
|
encoding.codec = "json"
|
||||||
buffer.type = "memory"
|
buffer.type = "memory"
|
||||||
@@ -81,7 +101,7 @@ if length(result) > 0 {
|
|||||||
healthcheck.enabled = true
|
healthcheck.enabled = true
|
||||||
[sinks.loki.labels]
|
[sinks.loki.labels]
|
||||||
job_name = "{{job_name}}"
|
job_name = "{{job_name}}"
|
||||||
node = "{{label.\"com.hashicorp.nomad.node_name\" }}"
|
node = "{{node}}"
|
||||||
frontend_name = "{{frontend_name}}"
|
frontend_name = "{{frontend_name}}"
|
||||||
EOH
|
EOH
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user