日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

定时任务监控服务Healthchecks

發(fā)布時(shí)間:2024/3/13 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 定时任务监控服务Healthchecks 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

今天是足不出戶的第 18 天

周六(4月16日)做了核酸,周日在家做的抗原,今天下午核酸。

居委會一早就通知,今天會發(fā)放第三批免費(fèi)物資,是蔬菜包來著,已經(jīng)有人看到在小區(qū)邊上卸貨了。

第一批政府免費(fèi)物資是 4 月 4 號發(fā)的,第二批是 4 月 16 日發(fā)的,今天是第三批,其實(shí)算上 4 月 10 日發(fā)的口罩、抗原和蓮花清瘟膠囊,今天是第四批免費(fèi)物資了。

太拖沓了,本文開始于 2021 年 12 月,上周才最終完成,看來要做定時(shí)任務(wù)來檢測未完成的文檔了🙂


什么是 Healthchecks ?

Healthchecks 是一項(xiàng) cron 作業(yè)監(jiān)控服務(wù)。非常適合 cron 作業(yè)和類似 cron 的系統(tǒng)(systemd 計(jì)時(shí)器、Jenkins 構(gòu)建作業(yè)、Windows 計(jì)劃任務(wù)、wp-cron、類似 uwsgi cron 的界面、Heroku 調(diào)度程序等)。當(dāng) ping 未按時(shí)到達(dá)時(shí),Healthchecks 會發(fā)出警報(bào)。

Healthchecks 帶有 Web 儀表板、API、25+ 個(gè)用于發(fā)送通知的集成、每月電子郵件報(bào)告、WebAuthn 2FA 支持、團(tuán)隊(duì)管理功能:項(xiàng)目、團(tuán)隊(duì)成員、只讀訪問。

準(zhǔn)備

用局域網(wǎng) IP 訪問雖然能看到主界面,但是登錄后會顯示跨域問題,官方文檔中 https://healthchecks.io/docs/self_hosted_docker 的 TLS Termination 章節(jié)寫了要求,但是沒給出具體配置

老蘇用 Nginx Proxy Manager 做了反代,準(zhǔn)備用域名 https://hc.laosu.ml 來訪問(你要準(zhǔn)備自己的域名,不是用老蘇的)

其中 http://192.168.0.197:8000 為群暉的 IP + Healthchecks 的端口

SSL 部分都勾選了

還需在 Advanced --> Custom Nginx Configuration 中填入下面的腳本,否則和在局域網(wǎng)訪問結(jié)果一樣

location / {proxy_pass http://192.168.0.197:8000;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto https;proxy_set_header Host $http_host;}

安裝

在群暉上以 Docker 方式安裝。

在注冊表中搜索 healthchecks ,選擇第二個(gè) galexrt/healthchecks,版本選擇 latest。

如果需要最新的版本,只能用命令行 docker pull ghcr.io/galexrt/healthchecks:main 下載,因?yàn)檫@個(gè)鏡像自 v1.22.0 之后,不再推送到 Docker Hub

在 docker 文件夾中,創(chuàng)建一個(gè)新文件夾,并將其命名為 healthchecks,再建一個(gè)子目錄 data,需要給 data 賦予 Everyone 用戶 讀寫權(quán)限

如果這一步?jīng)]做,會導(dǎo)致容器啟動時(shí) SQLite 數(shù)據(jù)庫創(chuàng)建失敗,最終引起 CPU 占用高居不下

文件夾裝載路徑說明
docker/healthchecks/data/data存放數(shù)據(jù)

端口

端口不沖突就行,不確定的話可以用命令查一下

# 查看端口占用 netstat -tunlp | grep 端口號 本地端口容器端口
25252525
80008000

環(huán)境

可變值
DB_NAME/data/hc.sqlite
SECRET_KEYYOUR_SECRET_KEY
PING_EMAIL_DOMAINhc.laosu.ml,存疑
SITE_ROOThttps://hc.laosu.ml,有端口也要帶上
EMAIL_HOSTsmtp.88.com
EMAIL_PORT465
EMAIL_USE_TLSTrue
EMAIL_HOST_USERwbsu2003@88.com
EMAIL_HOST_PASSWORDYOUR_PASSWORD,郵箱的第三方密碼
ALLOWED_HOSTSlocalhost,*
CONTAINER_PRUNE_INTERVAL缺省為 600 秒
DEBUG默認(rèn)是 True,改為 False
  • 系統(tǒng)支持 postgres, mysql, sqlite3 數(shù)據(jù)庫,默認(rèn)情況下使用 SQLite 數(shù)據(jù)庫;
  • 雖然設(shè)了郵箱,但老蘇并沒有驗(yàn)證過發(fā)郵件,PING_EMAIL_DOMAIN 可能應(yīng)該是要設(shè)為 88.com ;
  • TZ 記得要改為 Asia/Shanghai

    DEBUG 記得要改為 False,否則 Web 界面的頂部會顯示 Running in debug mode, do not use in production.

    更多的環(huán)境參數(shù)可以參考:https://hub.docker.com/r/galexrt/healthchecks/

    運(yùn)行

    在瀏覽器中輸入 https://hc.laosu.ml 就能看到主界面

    創(chuàng)建用戶

    要登錄還需要?jiǎng)?chuàng)建一個(gè) Healthchecks 超級用戶,需進(jìn)入終端機(jī)

    方法:「終端機(jī)」 => 「新增」 => 「通過命令啟動」=> 「請輸入一個(gè)命令」=> 「sh」

    執(zhí)行下面的命令

    # 創(chuàng)建超級用戶 python3 /healthchecks/manage.py createsuperuser

    輸入郵件和密碼即可

    添加項(xiàng)目

    在瀏覽器中輸入 https://hc.laosu.ml ,用上一步創(chuàng)建的賬號登錄,默認(rèn)會把自己作為第一個(gè)監(jiān)控項(xiàng)目

    通過 Add Check 可以添加您要監(jiān)控的單個(gè)服務(wù)

    設(shè)置很簡單,而且右上角提供了在線幫助,點(diǎn) Docs 菜單隨時(shí)可以查閱

    應(yīng)用

    healthchecks 可用于提供監(jiān)測服務(wù),比如監(jiān)測 Docker 的監(jiān)控狀況。

    例如:每 60 秒用 curl 檢測一次容器是否能在 10 秒內(nèi)回應(yīng)請求

    下面是一段實(shí)現(xiàn)上面目的 docker-compose 示例:

  • 將第一個(gè) URL地址 http://localhost:80 更改為您的應(yīng)用程序的 URL。可以是容器內(nèi)的地址、局域網(wǎng)地址、也可以是公網(wǎng)地址,老蘇用了容器內(nèi)部的地址;
  • 第二個(gè) URL 地址 https://hc.laosu.ml/ping/<UUID> 是 healthchecks 實(shí)例的地址。這個(gè)可以在 Healthchecks 中獲得;
  • version: "3" services:app:image: wbsu2003/webampcontainer_name: webampports:- 7080:80command: apk --no-cache add curlhealthcheck:test:["CMD","curl","-f","http://localhost:80","&&","curl","-f","--insecure","https://hc.laosu.ml/ping/<UUID>"]interval: 60stimeout: 10sretries: 6
    • interval:Health check 時(shí)間間隔
    • timeout:當(dāng) Health check 超過此設(shè)定的時(shí)間,則會視為失敗
    • retries:當(dāng) Health check 連續(xù)失敗次數(shù)超過此設(shè)定時(shí),則會將狀態(tài)更改為 unhealthy
    • start-period:設(shè)置容器啟動后應(yīng)忽略健康檢查的持續(xù)時(shí)間

    【注意】:需要說明的是,鏡像 wbsu2003/webamp 本身在打包的時(shí)候并沒有打入 curl 命令,所以有兩個(gè)辦法:

  • 重新打包鏡像,需要在 Dockerfile 中增加一行命令 RUN apk -U --no-cache add ca-certificates curl

  • 進(jìn)入容器的終端機(jī),執(zhí)行 apk -U --no-cache add ca-certificates curl

  • 老蘇用了第二個(gè)方法

    添加 healthchecks 之后,用 docker ps 查看 STATUS 狀態(tài)會有標(biāo)識

    如果要查看日志,可以用 docker inspect --format='{{json .State.Health}}' webamp

    或者從 portainer 中查看

    過一會兒,狀態(tài)會從 starting

    轉(zhuǎn)變?yōu)?healthy

    對于 unhealthy 的容器,

    或者

    可以采用 Docker Autoheal 來監(jiān)控和重啟,不過老蘇還沒開始研究。

    參考文檔

    healthchecks/healthchecks: A cron monitoring tool written in Python & Django
    地址:https://github.com/healthchecks/healthchecks

    Running with Docker - Healthchecks.io
    地址:https://healthchecks.io/docs/self_hosted_docker/

    galexrt/container-healthchecks: Simple to use Container Image for https://github.com/healthchecks/healthchecks.
    地址:https://github.com/galexrt/container-healthchecks

    Garrit’s Notes
    地址:https://garrit.xyz/posts/2021-05-15-healthchecks-io-with-docker

    [Docker] Health Check and Restart Unhealthy Container | wshs0713’s blog
    地址:https://wshs0713.github.io/posts/b8226bad/

    willfarrell/docker-autoheal: Monitor and restart unhealthy docker containers.
    地址:https://github.com/willfarrell/docker-autoheal

    總結(jié)

    以上是生活随笔為你收集整理的定时任务监控服务Healthchecks的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。