diff --git a/.env.example b/.env.example index f0f988a..cbcdffc 100644 --- a/.env.example +++ b/.env.example @@ -28,4 +28,8 @@ TS_AUTHKEY= HOMELAB_TLD=ice HOMELAB_ZONE=cloud ADVERTISE_ROUTE=10.1.0.0/24 -TSDNS_SUBNET=10.1.0.0/24 \ No newline at end of file +TSDNS_SUBNET=10.1.0.0/24 + +# /usr/bin/alloy +LOKI_URL= +LOKI_TENANT= \ No newline at end of file diff --git a/image/overlay/etc/config.alloy b/image/overlay/etc/config.alloy new file mode 100644 index 0000000..e9a4d6b --- /dev/null +++ b/image/overlay/etc/config.alloy @@ -0,0 +1,88 @@ +discovery.docker "local" { + host = "unix:///var/run/docker.sock" + refresh_interval = "5s" +} + +discovery.relabel "docker" { + targets = discovery.docker.local.targets + + // + // Container Name + // + rule { + source_labels = ["__meta_docker_container_name"] + regex = "/(.*)" + replacement = "$1" + target_label = "container" + } + + // + // Docker Compose + // + rule { + source_labels = ["__meta_docker_container_label_com_docker_compose_service"] + target_label = "service" + } + + rule { + source_labels = ["__meta_docker_container_label_com_docker_compose_project"] + target_label = "compose_project" + } + + // + // Image + // + rule { + source_labels = ["__meta_docker_container_image"] + target_label = "image" + } + + // + // stdout / stderr + // + rule { + source_labels = ["__meta_docker_container_log_stream"] + target_label = "stream" + } + + // + // Query 用 + // + rule { + source_labels = ["__meta_docker_container_label_com_docker_compose_service"] + target_label = "job" + } +} + +loki.process "docker" { + + stage.static_labels { + values = { + node = env("NODE_NAME"), + environment = env("ENVIRONMENT"), + platform = "docker", + } + } + + forward_to = [loki.write.default.receiver] +} + +loki.source.docker "local" { + host = "unix:///var/run/docker.sock" + + targets = discovery.relabel.docker.output + + refresh_interval = "5s" + + forward_to = [ + loki.process.docker.receiver, + ] +} + +loki.write "default" { + + endpoint { + url = env("LOKI_URL") + tenant_id = env("LOKI_TENANT") + } +} \ No newline at end of file diff --git a/image/overlay/etc/init.d/alloy b/image/overlay/etc/init.d/alloy new file mode 100755 index 0000000..2c1f3d0 --- /dev/null +++ b/image/overlay/etc/init.d/alloy @@ -0,0 +1,12 @@ +#!/sbin/openrc-run + +depend() { + need docker net +} + +supervisor="supervise-daemon" +restart_max=5 +restart_delay=10 + +command="/usr/bin/alloy" +pidfile="/run/${RC_SVCNAME}.pid" diff --git a/image/overlay/etc/init.d/bubble b/image/overlay/etc/init.d/bubble index 49ad1d6..19c3e57 100755 --- a/image/overlay/etc/init.d/bubble +++ b/image/overlay/etc/init.d/bubble @@ -4,6 +4,10 @@ depend() { need docker tsdns } +start_pre() { + docker pull git.sfclub.cc/cloud/workspace-image:latest +} + command="/usr/bin/bubble" command_args="-config /daemon/config.yaml 2>&1" pidfile="/run/${RC_SVCNAME}.pid" diff --git a/image/overlay/etc/init.d/tsdns b/image/overlay/etc/init.d/tsdns index 1fc86a8..fb8cf50 100755 --- a/image/overlay/etc/init.d/tsdns +++ b/image/overlay/etc/init.d/tsdns @@ -5,7 +5,7 @@ depend() { } supervisor="supervise-daemon" -restart_max=0 +restart_max=5 restart_delay=10 command="/usr/bin/tsdns" diff --git a/image/overlay/etc/init.d/update-images b/image/overlay/etc/init.d/update-images deleted file mode 100755 index 9e7e683..0000000 --- a/image/overlay/etc/init.d/update-images +++ /dev/null @@ -1,7 +0,0 @@ -#!/sbin/openrc-run - -depend() { - need docker net -} - -command="/usr/bin/update-images" diff --git a/image/overlay/usr/bin/.gitkeep b/image/overlay/usr/bin/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/image/overlay/usr/bin/alloy b/image/overlay/usr/bin/alloy new file mode 100755 index 0000000..d86c8a3 --- /dev/null +++ b/image/overlay/usr/bin/alloy @@ -0,0 +1,19 @@ +#!/bin/sh + +if docker container inspect "alloy" ; then + exit 0 +fi + +hostname=$(cat /etc/hostname) + +docker run -e "NODE_NAME=$hostname" \ + -e "ENVIRONMENT=prod" \ + -e "LOKI_URL=_LOKI_URL_" \ + -e "LOKI_TENANT=_LOKI_TENANT_" \ + -v "/etc/config.alloy:/etc/alloy/config.alloy" \ + -v "/var/run/docker.sock:/var/run/docker.sock" \ + -v "/data/alloy:/var/lib/alloy" \ + --restart unless-stopped \ + --name "alloy" \ + grafana/alloy:latest \ + run --storage.path=/var/lib/alloy/data /etc/alloy/config.alloy \ No newline at end of file diff --git a/image/overlay/usr/bin/update-images b/image/overlay/usr/bin/update-images deleted file mode 100755 index 6a7d3e1..0000000 --- a/image/overlay/usr/bin/update-images +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -cleanup_() { - touch /.image-update-flag -} - -if [ ! -f /.image-update-flag ]; then - docker pull -fi -