From: Tom Clegg Date: Fri, 13 May 2022 20:48:36 +0000 (-0400) Subject: 18947: Merge branch 'main' X-Git-Tag: 2.5.0~176^2 X-Git-Url: https://git.arvados.org/arvados.git/commitdiff_plain/7865723dc5eee129e7ac269f3495274a13ff70ae?hp=91dc80d9060c5aeb04228f0f280ecc3db182ff94 18947: Merge branch 'main' Arvados-DCO-1.1-Signed-off-by: Tom Clegg --- diff --git a/build/run-build-packages.sh b/build/run-build-packages.sh index 26705c0664..3771662423 100755 --- a/build/run-build-packages.sh +++ b/build/run-build-packages.sh @@ -254,7 +254,7 @@ package_go_binary cmd/arvados-server crunch-run "$FORMAT" "$ARCH" \ "Supervise a single Crunch container" package_go_binary services/crunchstat crunchstat "$FORMAT" "$ARCH" \ "Gather cpu/memory/network statistics of running Crunch jobs" -package_go_binary services/health arvados-health "$FORMAT" "$ARCH" \ +package_go_binary cmd/arvados-server arvados-health "$FORMAT" "$ARCH" \ "Check health of all Arvados cluster services" package_go_binary cmd/arvados-server keep-balance "$FORMAT" "$ARCH" \ "Rebalance and garbage-collect data blocks stored in Arvados Keep" diff --git a/services/health/arvados-health.service b/cmd/arvados-server/arvados-health.service similarity index 92% rename from services/health/arvados-health.service rename to cmd/arvados-server/arvados-health.service index 4b8745d154..cf246b0ee2 100644 --- a/services/health/arvados-health.service +++ b/cmd/arvados-server/arvados-health.service @@ -12,7 +12,8 @@ AssertPathExists=/etc/arvados/config.yml StartLimitIntervalSec=0 [Service] -Type=simple +Type=notify +EnvironmentFile=-/etc/arvados/environment ExecStart=/usr/bin/arvados-health # Set a reasonable default for the open file limit LimitNOFILE=65536 diff --git a/cmd/arvados-server/cmd.go b/cmd/arvados-server/cmd.go index ae1e3fbeee..3a1fcd4c64 100644 --- a/cmd/arvados-server/cmd.go +++ b/cmd/arvados-server/cmd.go @@ -5,6 +5,7 @@ package main import ( + "context" "encoding/json" "fmt" "io" @@ -21,6 +22,8 @@ import ( "git.arvados.org/arvados.git/lib/install" "git.arvados.org/arvados.git/lib/lsf" "git.arvados.org/arvados.git/lib/recovercollection" + "git.arvados.org/arvados.git/lib/service" + "git.arvados.org/arvados.git/sdk/go/arvados" "git.arvados.org/arvados.git/sdk/go/health" "git.arvados.org/arvados.git/services/githttpd" keepbalance "git.arvados.org/arvados.git/services/keep-balance" @@ -28,6 +31,7 @@ import ( "git.arvados.org/arvados.git/services/keepproxy" "git.arvados.org/arvados.git/services/keepstore" "git.arvados.org/arvados.git/services/ws" + "github.com/prometheus/client_golang/prometheus" ) var ( @@ -47,6 +51,7 @@ var ( "dispatch-cloud": dispatchcloud.Command, "dispatch-lsf": lsf.DispatchCommand, "git-httpd": githttpd.Command, + "health": healthCommand, "install": install.Command, "init": install.InitCommand, "keep-balance": keepbalance.Command, @@ -90,3 +95,17 @@ func (wb2command) RunCommand(prog string, args []string, stdin io.Reader, stdout } return 0 } + +var healthCommand cmd.Handler = service.Command(arvados.ServiceNameHealth, func(ctx context.Context, cluster *arvados.Cluster, _ string, reg *prometheus.Registry) service.Handler { + mClockSkew := prometheus.NewGauge(prometheus.GaugeOpts{ + Namespace: "arvados", + Subsystem: "health", + Name: "clock_skew_seconds", + Help: "Clock skew observed in most recent health check", + }) + reg.MustRegister(mClockSkew) + return &health.Aggregator{ + Cluster: cluster, + MetricClockSkew: mClockSkew, + } +}) diff --git a/lib/boot/supervisor.go b/lib/boot/supervisor.go index a5d61b4a1c..4b15266006 100644 --- a/lib/boot/supervisor.go +++ b/lib/boot/supervisor.go @@ -365,7 +365,7 @@ func (super *Supervisor) runCluster() error { runNginx{}, runServiceCommand{name: "controller", svc: super.cluster.Services.Controller, depends: []supervisedTask{seedDatabase{}}}, runServiceCommand{name: "git-httpd", svc: super.cluster.Services.GitHTTP}, - runGoProgram{src: "services/health", svc: super.cluster.Services.Health}, + runServiceCommand{name: "health", svc: super.cluster.Services.Health}, runServiceCommand{name: "keepproxy", svc: super.cluster.Services.Keepproxy, depends: []supervisedTask{runPassenger{src: "services/api"}}}, runServiceCommand{name: "keepstore", svc: super.cluster.Services.Keepstore}, runServiceCommand{name: "keep-web", svc: super.cluster.Services.WebDAV}, diff --git a/services/health/main.go b/services/health/main.go deleted file mode 100644 index 92bd377c80..0000000000 --- a/services/health/main.go +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (C) The Arvados Authors. All rights reserved. -// -// SPDX-License-Identifier: AGPL-3.0 - -package main - -import ( - "context" - "os" - - "git.arvados.org/arvados.git/lib/cmd" - "git.arvados.org/arvados.git/lib/service" - "git.arvados.org/arvados.git/sdk/go/arvados" - "git.arvados.org/arvados.git/sdk/go/health" - "github.com/prometheus/client_golang/prometheus" -) - -var ( - version = "dev" - command cmd.Handler = service.Command(arvados.ServiceNameHealth, newHandler) -) - -func newHandler(ctx context.Context, cluster *arvados.Cluster, _ string, reg *prometheus.Registry) service.Handler { - mClockSkew := prometheus.NewGauge(prometheus.GaugeOpts{ - Namespace: "arvados", - Subsystem: "health", - Name: "clock_skew_seconds", - Help: "Clock skew observed in most recent health check", - }) - reg.MustRegister(mClockSkew) - return &health.Aggregator{ - Cluster: cluster, - MetricClockSkew: mClockSkew, - } -} - -func main() { - os.Exit(command.RunCommand(os.Args[0], os.Args[1:], os.Stdin, os.Stdout, os.Stderr)) -}