This is an automated email from the ASF dual-hosted git repository. shown pushed a commit to branch 1227-yuluo/chore in repository https://gitbox.apache.org/repos/asf/hertzbeat-collector-go.git
commit ae787fe7f190742772369ff3534154e5c9583fd5 Author: yuluo-yx <[email protected]> AuthorDate: Sat Dec 27 17:12:52 2025 +0800 docs: add dev docs Signed-off-by: yuluo-yx <[email protected]> --- 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..525dce4 --- /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]
