Merge loki and promtail to one job

This commit is contained in:
IamTheFij 2025-02-24 09:20:53 -08:00
parent 908d960f94
commit 8e108b11b1
5 changed files with 118 additions and 73 deletions

View File

@ -1,5 +0,0 @@
resource "nomad_job" "exporters" {
jobspec = templatefile("${path.module}/exporters.nomad", {
use_wesher = var.use_wesher,
})
}

View File

@ -1,41 +0,0 @@
auth_enabled: false
server:
http_listen_port: 3100
common:
ring:
instance_addr: 127.0.0.1
kvstore:
store: inmemory
replication_factor: 1
path_prefix: /tmp/loki
schema_config:
configs:
- from: 2020-05-15
store: boltdb-shipper
object_store: filesystem
schema: v11
index:
prefix: index_
period: 24h
storage_config:
boltdb_shipper:
active_index_directory: {{ env "NOMAD_TASK_DIR" }}/index
filesystem:
directory: {{ env "NOMAD_TASK_DIR" }}/chunks
limits_config:
enforce_metric_name: false
reject_old_samples: true
reject_old_samples_max_age: 168h
chunk_store_config:
max_look_back_period: 168h
table_manager:
retention_deletes_enabled: true
retention_period: 168h

View File

@ -1,10 +1,116 @@
job "exporters" { job "loki" {
datacenters = ["dc1"] datacenters = ["dc1"]
type = "service" type = "service"
priority = 55 priority = 55
constraint { group "loki" {
distinct_hosts = true count = 1
network {
mode = "bridge"
port "main" {
%{~ if use_wesher ~}
host_network = "wesher"
%{~ endif ~}
to = 3100
}
}
# Loki uses disk storage. We want to preserve, if possible
# but some loss is ok.
ephemeral_disk {
migrate = true
sticky = true
}
task "loki" {
driver = "docker"
service {
name = "loki"
provider = "nomad"
port = "main"
tags = [
"traefik.enable=true",
"traefik.http.routers.loki.entryPoints=websecure",
]
check {
type = "http"
path = "/ready"
interval = "30s"
timeout = "2s"
check_restart {
limit = 5
grace = "90s"
}
}
}
config {
image = "grafana/loki:2.8.7"
ports = ["main"]
args = ["--config.file=$${NOMAD_TASK_DIR}/loki-config.yml"]
}
template {
data = <<EOF
auth_enabled: false
server:
http_listen_port: 3100
common:
ring:
instance_addr: 127.0.0.1
kvstore:
store: inmemory
replication_factor: 1
path_prefix: /tmp/loki
schema_config:
configs:
- from: 2020-05-15
store: boltdb-shipper
object_store: filesystem
schema: v11
index:
prefix: index_
period: 24h
storage_config:
boltdb_shipper:
active_index_directory: {{ env "NOMAD_TASK_DIR" }}/index
filesystem:
directory: {{ env "NOMAD_TASK_DIR" }}/chunks
limits_config:
enforce_metric_name: false
reject_old_samples: true
reject_old_samples_max_age: 168h
chunk_store_config:
max_look_back_period: 168h
table_manager:
retention_deletes_enabled: true
retention_period: 168h
EOF
destination = "$${NOMAD_TASK_DIR}/loki-config.yml"
env = false
}
resources {
cpu = 50
memory = 100
}
}
} }
group "promtail" { group "promtail" {
@ -12,6 +118,10 @@ job "exporters" {
# I am moving away from `system` jobs because of https://github.com/hashicorp/nomad/issues/1202 # I am moving away from `system` jobs because of https://github.com/hashicorp/nomad/issues/1202
count = 2 count = 2
constraint {
distinct_hosts = true
}
network { network {
mode = "bridge" mode = "bridge"

View File

@ -1,24 +1,5 @@
module "loki" { resource "nomad_job" "loki" {
source = "../services/service" jobspec = templatefile("${path.module}/loki.nomad", {
detach = false use_wesher = var.use_wesher,
})
name = "loki"
image = "grafana/loki:2.8.7"
args = ["--config.file=$${NOMAD_TASK_DIR}/loki-config.yml"]
service_port = 3100
ingress = true
use_wesher = var.use_wesher
service_check = {
path = "/ready"
}
sticky_disk = true
templates = [
{
data = file("${path.module}/loki-config.yml")
dest = "loki-config.yml"
mount = false
}
]
} }

View File

@ -19,7 +19,7 @@ resource "nomad_job" "nomad-client-stalker" {
resource "nomad_job" "syslog-ng" { resource "nomad_job" "syslog-ng" {
jobspec = file("${path.module}/syslogng.nomad") jobspec = file("${path.module}/syslogng.nomad")
depends_on = [module.loki] depends_on = [nomad_job.loki]
} }
resource "nomad_job" "ddclient" { resource "nomad_job" "ddclient" {