This is an automated email from the ASF dual-hosted git repository.
shown pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/hertzbeat-collector-go.git
The following commit(s) were added to refs/heads/main by this push:
new 051f0c7 docs: add dev docs (#39)
051f0c7 is described below
commit 051f0c7d538e238c3a37c49a0f067f1405611bcc
Author: shown <[email protected]>
AuthorDate: Mon Dec 29 20:26:51 2025 +0800
docs: add dev docs (#39)
---
docs/dev.md | 52 +++++++++++++++++++++++++++++++++++++++++++
docs/img/hcg.png | Bin 0 -> 34168 bytes
etc/hertzbeat-collector.yaml | 1 +
tools/docker/hcg/Dockerfile | 9 +++++---
tools/make/golang.mk | 22 +++++++++++++++---
tools/make/image.mk | 10 ++++-----
6 files changed, 83 insertions(+), 11 deletions(-)
diff --git a/docs/dev.md b/docs/dev.md
new file mode 100644
index 0000000..e67b00e
--- /dev/null
+++ b/docs/dev.md
@@ -0,0 +1,52 @@
+# HCG 调试
+
+## 启动 Hertzbeat Manager
+
+```shell
+wget
https://github.com/apache/hertzbeat/releases/download/v1.7.3/apache-hertzbeat-1.7.3-docker-compose.tar.gz
+
+tar -zxvf apache-hertzbeat-1.7.3-docker-compose.tar.gz
+
+cd hertzbeat-postgresql-victoria-metrics
+
+docker compose up -d
+```
+
+## 启动 Java Collector(如有需要)
+
+```shell
+docker run -d \
+ -e IDENTITY=custom-collector-name \
+ -e MODE=public \
+ -e MANAGER_HOST=127.0.0.1 \
+ -e MANAGER_PORT=1158 \
+ --name hertzbeat-collector apache/hertzbeat-collector
+```
+
+-e IDENTITY=custom-collector-name : (可选) 设置采集器的唯一标识名称。注意多采集器时名称需保证唯一性。
+-e MODE=public : 配置运行模式(public or private), 公共集群模式或私有云边模式。
+-e MANAGER_HOST=127.0.0.1 : 重要, 配置连接的 HertzBeat Server 地址,127.0.0.1 需替换为
HertzBeat Server 对外 IP 地址。
+-e MANAGER_PORT=1158 : (可选) 配置连接的 HertzBeat Server 端口,默认 1158.
+
+## 启动 Go Collector
+
+启动前检查 etc 目录下的配置文件 `etc/hertzbeat-collector-go.yml` 中的 Manager 地址是否正确。
+
+### 二进制启动
+
+`make dev-run`
+
+### 容器启动
+
+```shell
+make image-build
+
+docker run -d \
+ -v
$(pwd)/etc/hertzbeat-collector.yaml:/var/hertzbeat/config/hertzbeat-collector.yaml\
+ --name hertzbeat-go-collector \
+ apache/hertzbeat-collector-go:4a6917188e31d153bddda6c03f2f2dd4057ef704
+```
+
+查看 go collector 是否注册到了 hertzbeat Manager:
+
+
diff --git a/docs/img/hcg.png b/docs/img/hcg.png
new file mode 100644
index 0000000..2379435
Binary files /dev/null and b/docs/img/hcg.png differ
diff --git a/etc/hertzbeat-collector.yaml b/etc/hertzbeat-collector.yaml
index c9893c1..b47b1ee 100644
--- a/etc/hertzbeat-collector.yaml
+++ b/etc/hertzbeat-collector.yaml
@@ -26,6 +26,7 @@ collector:
# Transport/Manager configuration
manager:
+ # Tips, replace the host & port with the actual manager service address
host: 127.0.0.1
port: 1158
protocol: netty
diff --git a/tools/docker/hcg/Dockerfile b/tools/docker/hcg/Dockerfile
index 2bb553d..14255ae 100644
--- a/tools/docker/hcg/Dockerfile
+++ b/tools/docker/hcg/Dockerfile
@@ -15,19 +15,22 @@
# specific language governing permissions and limitations
# under the License.
-FROM
docker.io/library/busybox@sha256:ab33eacc8251e3807b85bb6dba570e4698c3998eca6f0fc2ccb60575a563ea74
AS builder
+FROM docker.m.daocloud.io/library/busybox AS builder
+# FROM busybox:latest AS builder
# prepare hertzbeat data dir
RUN mkdir -p /var/hertzbeat
# Use distroless as minimal base image to package the manager binary
# Refer to https://github.com/GoogleContainerTools/distroless for more details
-FROM
gcr.io/distroless/base-nossl:nonroot@sha256:8981b63f968e829d21351ea9d28cc21127e5f034707f1d8483d2993d9577be0b
+FROM
gcr.io/distroless/base-nossl:nonroot@sha256:907e776d3a92b2a4c82e02ee282a00bcb3a193dce3adc902e85b7beb7f3fd9dc
COPY --from=builder /var/hertzbeat/ /var/hertzbeat/
# copy binary to image, run make build to generate binary.
-COPY bin /usr/local/bin/
+# Use TARGETARCH to copy the correct binary for the target platform
+ARG TARGETARCH
+COPY bin/linux/${TARGETARCH}/collector /usr/local/bin/collector
COPY etc /var/hertzbeat/config/
USER 65532:65532
diff --git a/tools/make/golang.mk b/tools/make/golang.mk
index 1e9fe77..54f82e9 100644
--- a/tools/make/golang.mk
+++ b/tools/make/golang.mk
@@ -40,12 +40,28 @@ dev-run: ## Golang dev, run main by run.
prod-run: ## Golang prod, run bin by run.
bin/collector server --config etc/hertzbeat-collector.yaml
+# 默认使用当前系统平台,可以通过参数覆盖:make build GOOS=linux GOARCH=amd64
+GOOS ?= $(shell go env GOOS)
+GOARCH ?= $(shell go env GOARCH)
+
.PHONY: build
# build
-build: ## Golang build
+build: ## Golang build, support cross-compile: make build GOOS=linux
GOARCH=amd64
@version=$$(cat VERSION); \
- # todo; 添加交叉编译支持
- CGO_ENABLED=0 go build -o bin/collector -ldflags "$(GO_LDFLAGS)"
cmd/main.go
+ echo "Building for $(GOOS)/$(GOARCH)..."; \
+ mkdir -p bin/$(GOOS)/$(GOARCH); \
+ CGO_ENABLED=0 GOOS=$(GOOS) GOARCH=$(GOARCH) go build -o
bin/$(GOOS)/$(GOARCH)/collector -ldflags "$(GO_LDFLAGS)" cmd/main.go
+
+.PHONY: all-platform-build
+all-platform-build: ## Build for all platforms (linux/amd64, linux/arm64,
darwin/amd64, darwin/arm64, windows/amd64)
+ @echo "Building for all platforms..."
+ @$(MAKE) build GOOS=linux GOARCH=amd64
+ @$(MAKE) build GOOS=linux GOARCH=arm64
+ @$(MAKE) build GOOS=darwin GOARCH=amd64
+ @$(MAKE) build GOOS=darwin GOARCH=arm64
+ @$(MAKE) build GOOS=windows GOARCH=amd64
+ @echo "All platform builds completed. Binaries in bin/"
+ @find bin -type f -name collector | xargs ls -lh
.PHONY: init
init: ## install base. For proto compile.
diff --git a/tools/make/image.mk b/tools/make/image.mk
index fc37001..9456ac7 100644
--- a/tools/make/image.mk
+++ b/tools/make/image.mk
@@ -28,8 +28,7 @@ DOCKER_SUPPORTED_API_VERSION ?= 1.32
IMAGES_DIR ?= $(wildcard tools/docker/hcg)
-IMAGES ?= hertzbeat-collector-go
-IMAGE_PLATFORMS ?= amd64 arm64
+IMAGES ?= apache/hertzbeat-collector-go
BUILDX_CONTEXT = hcg-build-tools-builder
@@ -38,11 +37,12 @@ BUILDX_CONTEXT = hcg-build-tools-builder
# todo: multi-platform build
.PHONY: image-build
-image-build: ## Build docker image
-image-build: IMAGE_PLATFORMS = ${shell uname -m}
+image-build: ## Build docker image, support: make image-build
IMAGE_PLATFORMS=arm64
+image-build: IMAGE_PLATFORMS ?= $(shell uname -m | head -n1 | awk '{print
$$1}')
image-build:
@$(LOG_TARGET)
- make build
+ @echo "Building for platform: $(IMAGE_PLATFORMS)"
+ make build GOOS=linux GOARCH=$(IMAGE_PLATFORMS)
$(DOCKER) buildx create --name $(BUILDX_CONTEXT) --use; \
$(DOCKER) buildx use $(BUILDX_CONTEXT); \
$(DOCKER) buildx build --load \
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]