Export host and internal metrics for prometheus, and simplify hostname setting.
This commit is contained in:
@@ -7,6 +7,9 @@ job "vector" {
|
|||||||
#host_network = "tailscale"
|
#host_network = "tailscale"
|
||||||
to = 8686
|
to = 8686
|
||||||
}
|
}
|
||||||
|
port "metrics" {
|
||||||
|
to = 9598
|
||||||
|
}
|
||||||
}
|
}
|
||||||
ephemeral_disk {
|
ephemeral_disk {
|
||||||
size = 500
|
size = 500
|
||||||
@@ -17,13 +20,14 @@ job "vector" {
|
|||||||
config {
|
config {
|
||||||
# debian instead of alpine to get journalctl
|
# debian instead of alpine to get journalctl
|
||||||
image = "timberio/vector:0.31.X-debian"
|
image = "timberio/vector:0.31.X-debian"
|
||||||
ports = ["api"]
|
ports = ["api", "metrics"]
|
||||||
volumes = [
|
volumes = [
|
||||||
"/var/run/docker.sock:/var/run/docker.sock:ro",
|
"/var/run/docker.sock:/var/run/docker.sock:ro",
|
||||||
"/var/log/glusterfs:/var/log/glusterfs:ro",
|
"/var/log/glusterfs:/var/log/glusterfs:ro",
|
||||||
"/var/log/journal:/var/log/journal:ro",
|
"/var/log/journal:/var/log/journal:ro",
|
||||||
"/etc/machine-id:/etc/machine-id:ro",
|
"/etc/machine-id:/etc/machine-id:ro",
|
||||||
]
|
]
|
||||||
|
hostname = "${node.unique.name}"
|
||||||
}
|
}
|
||||||
|
|
||||||
env {
|
env {
|
||||||
@@ -32,6 +36,7 @@ job "vector" {
|
|||||||
}
|
}
|
||||||
|
|
||||||
service {
|
service {
|
||||||
|
name = "vector"
|
||||||
check {
|
check {
|
||||||
port = "api"
|
port = "api"
|
||||||
type = "http"
|
type = "http"
|
||||||
@@ -40,6 +45,11 @@ job "vector" {
|
|||||||
timeout = "5s"
|
timeout = "5s"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
service {
|
||||||
|
name = "vector-metrics"
|
||||||
|
port = "metrics"
|
||||||
|
tags = ["metrics"]
|
||||||
|
}
|
||||||
|
|
||||||
resources {
|
resources {
|
||||||
cpu = 500 # 500 MHz
|
cpu = 500 # 500 MHz
|
||||||
@@ -62,7 +72,6 @@ job "vector" {
|
|||||||
|
|
||||||
[sources.vector_raw]
|
[sources.vector_raw]
|
||||||
type = "internal_logs"
|
type = "internal_logs"
|
||||||
host_key = "node"
|
|
||||||
|
|
||||||
[sources.docker_raw]
|
[sources.docker_raw]
|
||||||
type = "docker_logs"
|
type = "docker_logs"
|
||||||
@@ -70,43 +79,33 @@ job "vector" {
|
|||||||
type = "remap"
|
type = "remap"
|
||||||
inputs = [ "docker_raw" ]
|
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 {
|
||||||
. |= parse_apache_log!(result[0].log, "combined")
|
. |= parse_apache_log!(result[0].log, "combined")
|
||||||
|
.remote_host = del(.host)
|
||||||
.backend_url = result[0].backend_url
|
.backend_url = result[0].backend_url
|
||||||
.frontend_name = result[0].frontend_name
|
.frontend_name = result[0].frontend_name
|
||||||
.duration_ms = to_int!(result[0].duration_ms)
|
.duration_ms = to_int!(result[0].duration_ms)
|
||||||
.total_requests = to_int!(result[0].total_requests)
|
.total_requests = to_int!(result[0].total_requests)
|
||||||
}
|
}
|
||||||
|
.host = del(.label."com.hashicorp.nomad.node_name")
|
||||||
'''
|
'''
|
||||||
|
|
||||||
[sources.glusterfs_raw]
|
[sources.glusterfs_raw]
|
||||||
type = "file"
|
type = "file"
|
||||||
include = [ "/var/log/glusterfs/**/*.log" ]
|
include = [ "/var/log/glusterfs/**/*.log" ]
|
||||||
host_key = "node"
|
|
||||||
|
|
||||||
[sources.journald_raw]
|
[sources.journald_raw]
|
||||||
type = "journald"
|
type = "journald"
|
||||||
|
|
||||||
[transforms.nomadify_hostname]
|
|
||||||
type = "remap"
|
|
||||||
inputs = [
|
|
||||||
"vector_raw",
|
|
||||||
"glusterfs_raw",
|
|
||||||
"journald_raw",
|
|
||||||
]
|
|
||||||
source = '''
|
|
||||||
del(.host)
|
|
||||||
.node = "[[env "attr.unique.hostname" ]]"
|
|
||||||
'''
|
|
||||||
|
|
||||||
[sinks.loki]
|
[sinks.loki]
|
||||||
type = "loki"
|
type = "loki"
|
||||||
inputs = [
|
inputs = [
|
||||||
|
"vector_raw",
|
||||||
"docker_transformed",
|
"docker_transformed",
|
||||||
"nomadify_hostname",
|
"glusterfs_raw",
|
||||||
|
"journald_raw",
|
||||||
]
|
]
|
||||||
endpoint = "http://[[ range service "loki" ]][[ .Address ]]:[[ .Port ]][[ end ]]"
|
endpoint = "http://[[ range service "loki" ]][[ .Address ]]:[[ .Port ]][[ end ]]"
|
||||||
encoding.codec = "json"
|
encoding.codec = "json"
|
||||||
@@ -116,7 +115,20 @@ del(.host)
|
|||||||
remove_label_fields = true
|
remove_label_fields = true
|
||||||
healthcheck.enabled = true
|
healthcheck.enabled = true
|
||||||
[sinks.loki.labels]
|
[sinks.loki.labels]
|
||||||
node = "{{node}}"
|
host = "{{host}}"
|
||||||
|
|
||||||
|
[sources.internal_metrics]
|
||||||
|
type = "internal_metrics"
|
||||||
|
|
||||||
|
[sources.host_metrics]
|
||||||
|
type = "host_metrics"
|
||||||
|
|
||||||
|
[sinks.prometheus]
|
||||||
|
type = "prometheus_exporter"
|
||||||
|
inputs = [
|
||||||
|
"internal_metrics",
|
||||||
|
"host_metrics",
|
||||||
|
]
|
||||||
EOH
|
EOH
|
||||||
}
|
}
|
||||||
kill_timeout = "30s"
|
kill_timeout = "30s"
|
||||||
|
|||||||
Reference in New Issue
Block a user