diff --git a/0001-fix-promu-dependence-and-fix-not-found-web.patch b/0001-fix-promu-dependence-and-fix-not-found-web.patch new file mode 100644 index 0000000..d667419 --- /dev/null +++ b/0001-fix-promu-dependence-and-fix-not-found-web.patch @@ -0,0 +1,65 @@ +From f4984952bc9259a34b93b4bdf7581c1e586e7b36 Mon Sep 17 00:00:00 2001 +From: bzg1107 +Date: Sat, 31 Jul 2021 16:36:48 +0800 +Subject: [PATCH] fix promu dependence and fix not found web + +--- + Makefile.common | 10 ++++++---- + main.go | 5 +---- + 2 files changed, 7 insertions(+), 8 deletions(-) + +diff --git a/Makefile.common b/Makefile.common +index ce80d53..d33966d 100644 +--- a/Makefile.common ++++ b/Makefile.common +@@ -261,11 +261,13 @@ common-docker-manifest: + promu: $(PROMU) + + $(PROMU): +- $(eval PROMU_TMP := $(shell mktemp -d)) +- curl -s -L $(PROMU_URL) | tar -xvzf - -C $(PROMU_TMP) ++# $(eval PROMU_TMP := $(shell mktemp -d)) ++# curl -s -L $(PROMU_URL) | tar -xvzf - -C $(PROMU_TMP) ++# mkdir -p $(FIRST_GOPATH)/bin ++# cp $(PROMU_TMP)/promu-$(PROMU_VERSION).$(GO_BUILD_PLATFORM)/promu $(FIRST_GOPATH)/bin/promu ++# rm -r $(PROMU_TMP) + mkdir -p $(FIRST_GOPATH)/bin +- cp $(PROMU_TMP)/promu-$(PROMU_VERSION).$(GO_BUILD_PLATFORM)/promu $(FIRST_GOPATH)/bin/promu +- rm -r $(PROMU_TMP) ++ cp /usr/bin/promu $(FIRST_GOPATH)/bin/promu + + .PHONY: proto + proto: +diff --git a/main.go b/main.go +index 0c47d9d..bdf61e8 100644 +--- a/main.go ++++ b/main.go +@@ -34,8 +34,6 @@ import ( + "github.com/prometheus/common/promlog" + "github.com/prometheus/common/route" + "github.com/prometheus/common/version" +- "github.com/prometheus/exporter-toolkit/web" +- webflag "github.com/prometheus/exporter-toolkit/web/kingpinflag" + "gopkg.in/alecthomas/kingpin.v2" + + dto "github.com/prometheus/client_model/go" +@@ -61,7 +59,6 @@ func (lf logFunc) Println(v ...interface{}) { + func main() { + var ( + app = kingpin.New(filepath.Base(os.Args[0]), "The Pushgateway") +- webConfig = webflag.AddFlags(app) + listenAddress = app.Flag("web.listen-address", "Address to listen on for the web interface, API, and telemetry.").Default(":9091").String() + metricsPath = app.Flag("web.telemetry-path", "Path under which to expose metrics.").Default("/metrics").String() + externalURL = app.Flag("web.external-url", "The URL under which the Pushgateway is externally reachable.").Default("").URL() +@@ -195,7 +192,7 @@ func main() { + mux.Handle(apiPath+"/v1/", http.StripPrefix(apiPath+"/v1", av1)) + + go closeListenerOnQuit(l, quitCh, logger) +- err = web.Serve(l, &http.Server{Addr: *listenAddress, Handler: mux}, *webConfig, logger) ++ err = (&http.Server{Addr: *listenAddress, Handler: mux}).Serve(l) + level.Error(logger).Log("msg", "HTTP server stopped", "err", err) + // To give running connections a chance to submit their payload, we wait + // for 1sec, but we don't want to wait long (e.g. until all connections +-- +2.30.0 + diff --git a/pushgateway-1.4.1.tar.gz b/pushgateway-1.4.1.tar.gz new file mode 100644 index 0000000..eb937fa Binary files /dev/null and b/pushgateway-1.4.1.tar.gz differ diff --git a/pushgateway.default b/pushgateway.default new file mode 100644 index 0000000..e8df0c3 --- /dev/null +++ b/pushgateway.default @@ -0,0 +1 @@ +PUSHGATEWAY_OPTS='--web.listen-address=0.0.0.0:9091' \ No newline at end of file diff --git a/pushgateway.service b/pushgateway.service new file mode 100644 index 0000000..28dbe0c --- /dev/null +++ b/pushgateway.service @@ -0,0 +1,18 @@ +# -*- mode: conf -*- + +[Unit] +Description=Prometheus pushgateway. +Documentation=https://github.com/prometheus/pushgateway +After=network.target + +[Service] +EnvironmentFile=-/etc/default/pushgateway +User=prometheus +ExecStart=/usr/bin/pushgateway \ + $PUSHGATEWAY_OPTS +ExecReload=/bin/kill -HUP $MAINPID +Restart=always +LimitNOFILE=65536 + +[Install] +WantedBy=multi-user.target diff --git a/pushgateway.spec b/pushgateway.spec new file mode 100644 index 0000000..e04cc2f --- /dev/null +++ b/pushgateway.spec @@ -0,0 +1,72 @@ +%define debug_package %{nil} +%ifarch aarch64 +%global hostarch arm64 +%endif +%ifarch x86_64 +%global hostarch amd64 +%endif + +Name: pushgateway +Version: 1.4.1 +Release: 1 +Summary: Prometheus pushgateway. +License: ASL 2.0 +URL: https://github.com/prometheus/%{name} +Source0: https://github.com/prometheus/%{name}/archive/v%{version}/%{name}-%{version}.tar.gz +Source1: %{name}.service +Source2: %{name}.default +Source3: vendor.tar.gz +Patch0: 0001-fix-promu-dependence-and-fix-not-found-web.patch + +BuildRequires: golang >= 1.13 +BuildRequires: promu +%{?systemd_requires} +Requires(pre): shadow-utils + +%description +The Prometheus Pushgateway exists to allow ephemeral and batch jobs to expose their metrics to Prometheus. +Since these kinds of jobs may not exist long enough to be scraped, they can instead push their metrics to a Pushgateway. +The Pushgateway then exposes these metrics to Prometheus. + +%prep +%autosetup -p1 -n %{name}-%{version} +%setup -T -D -a 3 -n %{name}-%{version} + +%build +mkdir -p $(pwd)/bin +export GOBIN=$(pwd)/bin +go build -mod=vendor -o bin ./ ... + +%install +mkdir -p %{buildroot}%{_bindir} +install -D -m 755 bin/%{name} %{buildroot}%{_bindir}/ +mkdir -vp %{buildroot}%{_sharedstatedir}/prometheus +install -D -m 644 %{SOURCE1} %{buildroot}%{_unitdir}/%{name}.service +install -D -m 644 %{SOURCE2} %{buildroot}%{_sysconfdir}/default/%{name} + +%pre +getent group prometheus >/dev/null || groupadd -r prometheus +getent passwd prometheus >/dev/null || \ + useradd -r -g prometheus -d %{_sharedstatedir}/prometheus -s /sbin/nologin \ + -c "Prometheus services" prometheus +exit 0 + +%post +%systemd_post %{name}.service + +%preun +%systemd_preun %{name}.service + +%postun +%systemd_postun %{name}.service + +%files +%defattr(-,root,root,-) +%{_bindir}/* +%{_unitdir}/%{name}.service +%config(noreplace) %{_sysconfdir}/default/%{name} +%dir %attr(755, prometheus, prometheus)%{_sharedstatedir}/prometheus + +%changelog +* Wed Jul 14 2021 baizhonggui - 1.4.1-1 +- Package init diff --git a/vendor.tar.gz b/vendor.tar.gz new file mode 100644 index 0000000..f25a435 Binary files /dev/null and b/vendor.tar.gz differ