summaryrefslogtreecommitdiffstats
path: root/extra/healthcheck.go
diff options
context:
space:
mode:
Diffstat (limited to 'extra/healthcheck.go')
-rw-r--r--extra/healthcheck.go90
1 files changed, 90 insertions, 0 deletions
diff --git a/extra/healthcheck.go b/extra/healthcheck.go
new file mode 100644
index 0000000..f79b3e6
--- /dev/null
+++ b/extra/healthcheck.go
@@ -0,0 +1,90 @@
+/*
+ * If changed, have to run `npm run build-docker-builder-go`.
+ * This script should be run after a period of time (180s), because the server may need some time to prepare.
+ */
+package main
+
+import (
+ "crypto/tls"
+ "io/ioutil"
+ "log"
+ "net/http"
+ "os"
+ "runtime"
+ "strings"
+ "time"
+)
+
+func main() {
+ isFreeBSD := runtime.GOOS == "freebsd"
+
+ // Is K8S + uptime-kuma as the container name
+ // See #2083
+ isK8s := strings.HasPrefix(os.Getenv("UPTIME_KUMA_PORT"), "tcp://")
+
+ // process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0";
+ http.DefaultTransport.(*http.Transport).TLSClientConfig = &tls.Config{
+ InsecureSkipVerify: true,
+ }
+
+ client := http.Client{
+ Timeout: 28 * time.Second,
+ }
+
+ sslKey := os.Getenv("UPTIME_KUMA_SSL_KEY")
+ if len(sslKey) == 0 {
+ sslKey = os.Getenv("SSL_KEY")
+ }
+
+ sslCert := os.Getenv("UPTIME_KUMA_SSL_CERT")
+ if len(sslCert) == 0 {
+ sslCert = os.Getenv("SSL_CERT")
+ }
+
+ hostname := os.Getenv("UPTIME_KUMA_HOST")
+ if len(hostname) == 0 && !isFreeBSD {
+ hostname = os.Getenv("HOST")
+ }
+ if len(hostname) == 0 {
+ hostname = "127.0.0.1"
+ }
+
+ port := ""
+ // UPTIME_KUMA_PORT is override by K8S unexpectedly,
+ if !isK8s {
+ port = os.Getenv("UPTIME_KUMA_PORT")
+ }
+ if len(port) == 0 {
+ port = os.Getenv("PORT")
+ }
+ if len(port) == 0 {
+ port = "3001"
+ }
+
+ protocol := ""
+ if len(sslKey) != 0 && len(sslCert) != 0 {
+ protocol = "https"
+ } else {
+ protocol = "http"
+ }
+
+ url := protocol + "://" + hostname + ":" + port
+
+ log.Println("Checking " + url)
+ resp, err := client.Get(url)
+
+ if err != nil {
+ log.Fatalln(err)
+ }
+
+ defer resp.Body.Close()
+
+ _, err = ioutil.ReadAll(resp.Body)
+
+ if err != nil {
+ log.Fatalln(err)
+ }
+
+ log.Printf("Health Check OK [Res Code: %d]\n", resp.StatusCode)
+
+}