From c6ce5f676e05b1300d9426c30a3dbee7c2c5c5b2 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/build-image.sh | 2 +- image/configure.sh | 3 + image/overlay/etc/alloy/config.alloy | 88 +++++++++++++++++++++++++ image/overlay/etc/conf.d/alloy.template | 10 +++ image/overlay/etc/fstab | 2 +- 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/update-images | 10 --- 11 files changed, 113 insertions(+), 21 deletions(-) create mode 100644 image/overlay/etc/alloy/config.alloy create mode 100644 image/overlay/etc/conf.d/alloy.template delete mode 100755 image/overlay/etc/init.d/update-images delete mode 100644 image/overlay/usr/bin/.gitkeep delete mode 100755 image/overlay/usr/bin/update-images diff --git a/.env.example b/.env.example index f0f988a..127ec26 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 + +# /etc/conf.d/alloy +LOKI_URL= +LOKI_TENANT= \ No newline at end of file diff --git a/image/build-image.sh b/image/build-image.sh index 969798e..a8f4618 100755 --- a/image/build-image.sh +++ b/image/build-image.sh @@ -31,7 +31,7 @@ alpine-make-vm-image \ --fs-skel-dir "$OVERLAY_DIR" \ --fs-skel-chown root:root \ --script-chroot \ - --packages "curl docker openssh" \ + --packages "curl docker openssh alloy" \ "$IMAGE_FILE" \ "$CONFIGURE_SH" | tee $TMP diff --git a/image/configure.sh b/image/configure.sh index f190aff..3be0b3f 100755 --- a/image/configure.sh +++ b/image/configure.sh @@ -35,6 +35,9 @@ rc-update add sshd rc-update add auth-server rc-update add bubble +mv /etc/conf.d/alloy{.template,} +rc-update add alloy + step 'Adjust syslog' sed -i 's/^SYSLOGD_OPTS="\(.*\)"/SYSLOGD_OPTS="\1 -K"/' /etc/conf.d/syslog grep "SYSLOGD_OPTS" /etc/conf.d/syslog diff --git a/image/overlay/etc/alloy/config.alloy b/image/overlay/etc/alloy/config.alloy new file mode 100644 index 0000000..e9a4d6b --- /dev/null +++ b/image/overlay/etc/alloy/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/conf.d/alloy.template b/image/overlay/etc/conf.d/alloy.template new file mode 100644 index 0000000..0d8f3dc --- /dev/null +++ b/image/overlay/etc/conf.d/alloy.template @@ -0,0 +1,10 @@ +# Configuration for /etc/init.d/alloy + +STORAGE=/data/alloy +export ENVIRONMENT=prod +export LOKI_URL=_LOKI_URL_ +export LOKI_TENANT=_LOKI_TENANT_ +export NODE_NAME=$(cat /etc/hostname) + +# Comment out to disable process supervisor. +supervisor=supervise-daemon diff --git a/image/overlay/etc/fstab b/image/overlay/etc/fstab index 02f0fb9..9f03bf2 100644 --- a/image/overlay/etc/fstab +++ b/image/overlay/etc/fstab @@ -1,4 +1,4 @@ # /etc/fstab: static file system information # # -/dev/vdb1 /data ext4 rw,noatime 0 1 +/dev/vdb1 /data ext4 rw,noatime 0 1 \ No newline at end of file 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/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 -