如何给公司节约成本,搭建免费开源监控系统uptime-kuma
由于業(yè)務需要,我司的產(chǎn)品越來越多,api接口監(jiān)控相對比較薄弱,對此要搭建HTTP(s)的監(jiān)控系統(tǒng),之前一直使用第三方的監(jiān)控系統(tǒng),比如阿里云的云監(jiān)控。
基本流程
1.了解需求。
2.通過各種途徑了解有沒有相關免費解決方案
3.本地搭建實施,評估上線。
4.上線部署 使用。
本文記錄希望找到開源監(jiān)控系統(tǒng)走的彎路,apimonitor和apitestplatform都有這樣或者那樣的問題。最終找到對應的開源監(jiān)控uptime-kuma,并且有以外驚喜,如果有其他的需求也可以按照此流程進行。
業(yè)務需求
1.開源、免費
2.定時監(jiān)控生產(chǎn)環(huán)境的接口鏈接,如果出現(xiàn)訪問非200的、超時,則報警。
3.告警方式: 郵件、短信、釘釘群通知、電話等
4.支持本地Linux服務器部署
5.類似阿里云的“云監(jiān)控”–站點監(jiān)控,如圖。第三方參考解決方案https://www.jiankongbao.com/
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-w3s1ql3T-1646294341548)(images/image-20220302114059570.png)]
測試系統(tǒng)
服務器系統(tǒng): Centos7
IP地址: 192.168.1.5
服務器已安裝: nginx和docker
開源產(chǎn)品
在網(wǎng)上搜索、問同事和相關從業(yè)經(jīng)驗的人,是否有相關的監(jiān)控產(chǎn)品。
一、系統(tǒng)監(jiān)控產(chǎn)品apimonitor(項目已關閉)
apimonitor有api探測、api監(jiān)控、http請求模擬、系統(tǒng)接口監(jiān)控等功能,可以模擬http頁面操作過程,并根據(jù)請求耗時和響應結果監(jiān)控系統(tǒng)接口可用性和正確性。
開源地址: https://gitee.com/ecar_team/apimonitor
查看功能部分符合,但是需要二次開發(fā),可以在此開源項目上開發(fā)
1.新增告警功能,通過郵件、短信、釘釘群通知等。
2.新增訪問時長記錄。
二、apitestplatform(親測有bug)
一個web界面的接口自動化測試平臺
git地址:https://github.com/342164796/apitestplatform
安裝步驟
cd /data git clone https://github.com/342164796/apitestplatform cd apitestplatform/ 首次部署需要在settings.py文件里修改mysql的地址和賬戶名密碼為自己的數(shù)據(jù)庫地址 vi apitestplatform/settings.py 'default': {'ENGINE': 'django.db.backends.mysql','HOST': "*.*.*.*",'NAME': "apitestplatform",'USER': "user",'PASSWORD': "password",'PORT': "3306",# 'CHARSET': 'utf8',# 'COLLATION': 'utf8_general_ci',}2.初始化數(shù)據(jù)庫,執(zhí)行如下命令: python3.6 manage.py makemigrations python3.6 manage.py migratepython3.6 manage.py runserver安裝的踩坑記錄
1.SyntaxError: invalid syntax
# python manage.py runserver File "manage.py", line 14) from exc^ SyntaxError: invalid syntax python 版本太低,系統(tǒng)自帶為2.7 升級安裝 python3.6 # python -V Python 2.7.5# python3.6 -V Python 3.6.82.Couldn’t import Djang
沒有安裝django
# python3.6 manage.py runserver Couldn't import Django. Are you sure it's installed and available on your PYTHONPATH environment variable? Did you forget to activate a virtual environment?安裝 Django虛擬環(huán)境里用python3安django和uwsgi (如果用于生產(chǎn)的話,則需要指定安裝和你項目相同的版本)pip3.6 install django pip3.6 install uwsgi3.沒有安裝pymysql
再次報錯: # python3.6 manage.py runserver ModuleNotFoundError: No module named 'pymysql' 解決: # pip3.6 install pymysql 再次報錯: # python3.6 manage.py runserver ModuleNotFoundError: No module named 'django_crontab'4.沒有安裝django-crontab
報錯 django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on '*.*.*.*' ([Errno -2] Name or service not known)") 解決: # pip3.6 install django-crontab啟動成功
# python3.6 manage.py runserver You have 29 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, base, contenttypes, sessions. Run 'python manage.py migrate' to apply them. March 02, 2022 - 10:31:01 Django version 3.2.12, using settings 'apitestplatform.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.啟動成功
# python3.6 manage.py runserver Django version 3.2.12, using settings 'apitestplatform.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.nginx反向代理
server {listen 80;server_name apitest.test.me;#root /data/wwwroot/web/apitest.test.me/;access_log /data/wwwroot/log/apitest.test.me-access.log main_aliyun;error_log off;location / {proxy_pass http://127.0.0.1:8000;proxy_redirect off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}}綁定hosts訪問 192.168.1.5 apitest.test.me添加項目報錯:
由于不太清楚報錯的原因。放棄此開源項目。
三、開源監(jiān)控uptime-kuma
繼續(xù)百度搜索查找,在知乎的頁面中找到一個@無為無謂 的回答,頁面https://www.zhihu.com/question/23755976
他推薦了一個開源產(chǎn)品,uptime-kuma。
uptime-kuma地址:https://github.com/louislam/uptime-kuma
反向代理教程: https://github.com/louislam/uptime-kuma/wiki/Reverse-Proxy
演示網(wǎng)站:
https://demo.uptime.kuma.pet:27000/ 創(chuàng)建管理員賬號,有10分鐘的體驗時間。
查看演示基本能滿足需要,在本地搭建測試,功能都符合我的要求,居然還有驚喜,首先界面很精美,再次除了有基本的HTTP(S)的監(jiān)控的,還有TCP端口監(jiān)控、PING監(jiān)控、HTTP(s)關鍵字監(jiān)控、DNS監(jiān)控、Push監(jiān)控、Steam Game Server監(jiān)控,功能相當多,重點是都是免費的,只要有服務器,或者局域網(wǎng)的虛擬機(可訪問外網(wǎng))就可以監(jiān)控你的各種服務。
docker部署uptime-kuma
本次使用docker安裝如果,需要非docker參考開源文檔。
# mkdir -p /data/docker/uptime-kuma/data # docker run -d --restart=always -p 3001:3001 -v /data/docker/uptime-kuma/data:/app/data --name uptime-kuma louislam/uptime-kuma:1# netstat -tunpl|grep 3001 tcp6 0 0 :::3001 :::* LISTEN 29542/docker-proxy-訪問:
http://192.168.1.5:3001 訪問,創(chuàng)建管理員賬號。
nginx代理訪問
server {listen 80;server_name uptime.test.me;location / {proxy_pass http://localhost:3001;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";proxy_set_header Host $host;} } 綁定hosts訪問 192.168.1.5 uptime.test.me基本設置
設置里面功能還比較齊全,有外觀設置,消息通知重點是消息通知有,郵件、釘釘、短信、飛書等等的第三方通知,相當齊全。
外觀設置
通知設置
創(chuàng)建監(jiān)控項
HTTPS監(jiān)控圖
端口TCP檢測
關閉nginx,80端口:
systemctl stop nginx報錯:
重置密碼
Docker環(huán)境
docker exec -it <container name> npm run reset-password非Docker環(huán)境
# cd 項目目錄 # npm run reset-passwordhttps://github.com/louislam/uptime-kuma/wiki/Reset-Password-via-CLI
配置消息通知
Uptime Kuma提供多種的消息推送,詳情請參考:https://github.com/louislam/uptime-kuma/issues/284
我這里需要Bark手機APP、配置郵件、釘釘群通知的演示,還有阿里云短信也是比較方便快捷的提醒。
配置Bark
Brak是蘋果系統(tǒng)的一款推送軟件。ios手機安裝app,APP內(nèi)可以獲取推送地址: https://api.day.app/{密鑰}/這里改成你自己的推送內(nèi)容
https://api.day.app/{密鑰}/這里改成你自己的推送內(nèi)容后面不能有中文,有測試測試會報錯
點擊“測試一下”收到消息
模擬測試
恢復測試:
釘釘群通知
了解更多:https://developers.dingtalk.com/document/robots/custom-robot-access
釘釘群獲取WebHookUrl:假設為https://oapi.dingtalk.com/robot/send?access_token=abc123456
WebHookUrl:填寫完整的地址、SecretKey則填寫abc123456的值,我開始填寫了錯了,測試很久沒有通過。
配置郵箱
如圖配置,主機名、端口號、密碼不是163的登錄密碼,需要在163郵箱后臺開通開啟IMAP/SMTP服務。獲取授權密碼。
測試發(fā)送郵件:
禁用身份驗證
這是可選的,如果不禁用游客訪問需要用戶名和密碼,但是你關掉后,就可以自由訪問了。(后臺后上角的設置,然后拉到最下面即可看到!)
設置Status Page
這個功能還是很重要的,可以把新建的監(jiān)控服務放置到這個監(jiān)控頁面,這樣就可以隨時隨地的看到每個系統(tǒng)的狀態(tài)了。
點擊右上角的Status Page,開始編輯,具體看圖:
首頁默認就會是這樣的狀態(tài)頁。
總結
以上是生活随笔為你收集整理的如何给公司节约成本,搭建免费开源监控系统uptime-kuma的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 打砖块游戏-第12届蓝桥杯Scratch
- 下一篇: Cocoa-专业术语