From 708b689e78a07a3b06927b463dcba8373a960aca Mon Sep 17 00:00:00 2001 From: iceBear67 Date: Wed, 8 Jul 2026 22:13:27 +0800 Subject: [PATCH] add alloy --- .env.example | 6 +- image/overlay/etc/config.alloy | 88 ++++++++++++++++++++++++++ image/overlay/etc/init.d/alloy | 12 ++++ image/overlay/etc/init.d/bubble | 4 ++ image/overlay/etc/init.d/tsdns | 2 +- image/overlay/etc/init.d/update-images | 7 -- image/overlay/usr/bin/.gitkeep | 0 image/overlay/usr/bin/alloy | 19 ++++++ image/overlay/usr/bin/update-images | 10 --- 9 files changed, 129 insertions(+), 19 deletions(-) create mode 100644 image/overlay/etc/config.alloy create mode 100755 image/overlay/etc/init.d/alloy delete mode 100755 image/overlay/etc/init.d/update-images delete mode 100644 image/overlay/usr/bin/.gitkeep create mode 100755 image/overlay/usr/bin/alloy delete mode 100755 image/overlay/usr/bin/update-images 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 -