Uptime Kuma Docker ద్వారా సెల్ఫ్ హోస్టెడ్ మానిటరింగ్
Uptime Kumaను Dockerలో నడపండి. వెబ్సైట్లు, పోర్ట్లు, DNS, cron jobs పర్యవేక్షించండి. ఇమెయిల్, Telegram ద్వారా హెచ్చరికలు పొందండి. ప్రత్యేక VPS నుండి స్టేటస్ పేజ్ ప్రచురించండి.
మీరు నిర్మించేది ఏమిటి
బయటి నుండి మీ ఇతర సర్వర్లు మరియు వెబ్సైట్లను పర్యవేక్షించే ఒక చిన్న కంటైనర్. ఒకటి స్పందించడం ఆగిపోయిన క్షణంలోనే అది మీకు తెలియజేస్తుంది. ఈ హెచ్చరిక ఇమెయిల్, Telegram, Discord లేదా webhook ద్వారా వస్తుంది. Uptime Kuma అనేది SQLite ఫైలు ఆధారంగా నడిచే ఒక Node ప్రాసెస్. కాబట్టి అది 256-512 MB RAM లో సజావుగా నడుస్తుంది. ఇది ప్రత్యక్ష డాష్బోర్డ్, చరిత్ర గ్రాఫ్లు మరియు ప్రజా స్టేటస్ పేజీని ఇస్తుంది. సంస్థాపన పది పంక్తుల Compose ఫైలు మాత్రమే. వాస్తవంగా ముఖ్యమైన భాగం దాన్ని మీరు ఎక్కడ నడుపుతున్నారు మరియు మీ హెచ్చరికలు పరీక్షలో ఎప్పుడైనా పనిచేశాయా అనేది. ఎందుకంటే మీకు చేరగలదని మీరు నిరూపించని పర్యవేక్షకం లేనిదానికన్నా హానికరం. అది ఏమీ పర్యవేక్షించకుండా మీకు రక్షణ ఉందనే భ్రమను కలిగిస్తుంది.
మానిటర్ను అంతరాయం చేరుకోలేని చోట నడపండి
ఈ ఒక్క నిర్ణయం మొత్తం వ్యవస్థను నిలబెడుతుంది లేదా పడగొడుతుంది, అందుకే ఇది ముందు వస్తుంది. Uptime Kumaను అది పర్యవేక్షించే వ్యవస్థల మీదే నడపవద్దు. మానిటర్ అది పర్యవేక్షించే సర్వర్లోనే ఉంటే, మీకు అంతా అక్కరలేని సంఘటన, అనగా ఆ సర్వర్ చచ్చిపోవడం లేదా మెమరీ అయిపోవడం, మానిటర్ను కూడా చంపేస్తుంది. దాంతో మీకు ఎలర్ట్ రాదు: చచ్చిన మానిటర్ నుండి వచ్చే నిశ్శబ్దం "అంతా సరే" అని చెప్పినట్లే కనిపిస్తుంది. సర్వర్ బతికి ఉన్నప్పుడే మరో సూక్ష్మ ఉచ్చు ఉంది: localhost వైపు చూసే మానిటర్ వర్క్లోడ్తో పాటు CPUను పంచుకుంటుంది. కాబట్టి లోడ్ పెరిగితే దాని స్వంత తనిఖీ టైమ్అవుట్ అవుతుంది. అప్పుడు లక్ష్యం డౌన్ అయినట్లు చూపిస్తుంది. ఇది తప్పుడు అలారం, అసలు యూజర్లకు సర్వీస్ బాగాగానే అందుతున్నా కూడా.
కాబట్టి Uptime Kumaను అది పర్యవేక్షించే వ్యవస్థకు భిన్నమైన VPSలో నడపండి. ఆదర్శవంతంగా వేరే ప్రొవైడర్ లేదా రీజియన్లో ఉండాలి. అది మీ సర్వీసులను మీ యూజర్లు చేసే మాదిరిగానే చేరుకోవాలి: పబ్లిక్ ఇంటర్నెట్ మీదుగా, హోస్ట్నేమ్ ద్వారా. ఒక చౌకర కొనుగోలు సరిపోతుంది. ఒక చిన్న మానిటరింగ్ VPS మీ అన్ని సర్వర్లను పర్యవేక్షించగలదు. కుమా చచ్చిపోతే దాన్ని పట్టించుకోవడానికి, వేరే చోట ఉన్న cron నుండి పుష్ హార్ట్బీట్ జోడించండి.
ముందస్తు అవసరాలు మరియు సైజింగ్
- Docker యొక్క సొంత apt రిపోజిటరీ నుండి ఇన్స్టాల్ చేసిన Docker Engine మరియు Compose v2 ప్లగిన్తో కూడిన కొత్త Ubuntu 24.04 VPS.
docker.ioడిస్ట్రో ప్యాకేజీ వాడవద్దు, అది వెనుకబడి ఉంటుంది. - 256 MB RAM కొన్ని మానిటర్లను నడుపుతుంది; 512 MB నుండి 1 GB పలు మానిటర్లు మరియు రివర్స్ ప్రాక్సీకి సరిపోతుంది. తనిఖీల మధ్య CPU దాదాపు ఐడిల్గా ఉంటుంది.
- మీకు TLS మరియు పబ్లిక్ స్టేటస్ పేజీ కావాలనుకుంటే మాత్రమే ఒక డొమైన్ మరియు DNS
Aరికార్డ్ (ఉదాహరణకు VPS వైపు సూచించేstatus.example.com) అవసరం. ప్రైవేట్ ఇన్స్టాన్స్ DNS ని వదిలివేసి VPN లేదా SSH టన్నెల్ వాడవచ్చు. - అలర్ట్లు పంపే గమ్యానికి అవుట్బౌండ్ నెట్వర్క్ కావాలి: మీ మెయిల్ ప్రొవైడర్కు SMTP, లేదా Telegram మరియు Discord కు HTTPS.
Compose ఫైల్
దీన్ని /srv/uptime-kuma/compose.yaml లో ఉంచండి.
services:
uptime-kuma:
image: louislam/uptime-kuma:2
container_name: uptime-kuma
restart: unless-stopped
ports:
- "127.0.0.1:3001:3001"
volumes:
- kuma-data:/app/data
volumes:
kuma-data:దాన్ని ప్రారంభించండి మరియు మొదటి బూట్ను పరిశీలించండి:
sudo mkdir -p /srv/uptime-kuma
# save the file above as /srv/uptime-kuma/compose.yaml, then:
cd /srv/uptime-kuma && sudo docker compose up -d
sudo docker compose logs -f uptime-kumaసరైన ప్రారంభం Listening on 3001 ను లాగ్ చేస్తుంది మరియు నిశ్శబ్దంగా మారిపోతుంది. ఆ ఫైల్లోని మూడు అంశాలు ఉద్దేశపూర్వకంగా ఉన్నాయి.
127.0.0.1:3001:3001, 3001:3001 కాదు. Docker అనేది ufw ప్యాకెట్ను చూసే ముందు DNAT నియమాలతో పోర్టులను ప్రచురిస్తుంది, కాబట్టి కేవలం 3001:3001 ఉంచడం మీ ఫైర్వాల్తో సంబంధం లేకుండా మీ డాష్బోర్డ్ను పబ్లిక్ ఇంటర్నెట్లో ఉంచుతుంది. లూప్బ్యాక్కు బైండ్ చేయడం దాన్ని ప్రైవేట్గా ఉంచుతుంది, కేవలం రివర్స్ ప్రాక్సీ మాత్రమే బయటకు కనిపిస్తుంది; ఒక ప్రైవేట్ ఇన్స్టాన్స్ ప్రాక్సీని వదిలివేసి స్వయం-హోస్ట్ చేసిన WireGuard VPN ద్వారా 3001 ను చేరుకోవచ్చు.
/app/data వద్ద ఒక నేమ్డ్ వాల్యూమ్. Uptime Kuma గుర్తుంచుకున్న ప్రతిదీ, SQLite డేటాబేస్, మీ మానిటర్లు, నోటిఫికేషన్ సెట్టింగులు మరియు స్టేటస్-పేజ్ లోగోలు, అక్కడే ఉంటాయి. అది పోతే మీరు ఖాళీ అడ్మిన్ స్క్రీన్తో మొదలుపెడతారు; మీరు బ్యాకప్ చేయాల్సింది అదొక్కటే.
ఇమేజ్ ఒక మేజర్ ట్యాగ్, :2 కు పిన్ చేయబడింది. అది ప్రస్తుత స్థిరమైన లైన్; దాన్ని కాపీ చేసే ముందు Docker Hubలో కొత్త మేజర్ వెర్షన్ కోసం చెక్ చేయండి, మరియు latest వంటి మారుతూ ఉండే ట్యాగ్ను ఎప్పుడూ ట్రాక్ చేయవద్దు, దాన్ని ప్రాజెక్ట్ నిరాకరిస్తుంది. ఈ ఇమేజ్లో మేజర్-వెర్షన్ జంప్ అనేది ఒక వన్-వే డేటాబేస్ మైగ్రేషన్, దాన్ని మీరు ఉద్దేశపూర్వకంగా ట్రిగ్గర్ చేయాలి, రొటీన్ pull లో అనుకోకుండా చిక్కుకోకూడదు.
ఒక హెచ్చరిక: /app/data అనేది POSIX ఫైల్ లాక్లు ఉన్న ఫైల్సిస్టమ్పై ఉండాలి. ఒక లోకల్ Docker వాల్యూమ్ సరిపోతుంది; NFS పై SQLite డేటాబేస్ పాడవుతుంది మరియు మీకు SQLITE_BUSY మరియు database disk image is malformed వస్తాయి, కాబట్టి నెట్వర్క్ షేర్ను ఎప్పుడూ ఉపయోగించవద్దు.
మొదటి రన్: నిర్వాహక ఖాతాను సృష్టించండి
మీ ప్రాక్సీ ద్వారా https://status.example.com వద్ద ఇన్స్టెన్స్ను చూడండి, లేదా SSH టన్నెల్ ద్వారా: ssh -L 3001:127.0.0.1:3001 user@your-vps నడపండి మరియు http://localhost:3001 తెరవండి. మొదటి పేజీ అనేది నిర్వాహక వినియోగదారు పేరు మరియు పాస్వర్డ్ కోసం సెటప్ ఫారమ్; ఇందులో ఎటువంటి డిఫాల్ట్ లాగిన్ లేదు. ఒక బలమైన పాస్వర్డ్ను ఎంచుకోండి: ఈ డాష్బోర్డ్ మీరు పర్యవేక్షించే ప్రతిదాని యొక్క అంతర్గత చిరునామాలు మరియు టోకెన్లను చూస్తుంది. తర్వాత మర్చిపోయారా? బ్రౌజర్ నుండి కాకుండా హోస్ట్ నుండి రీసెట్ చేయండి:
sudo docker compose exec uptime-kuma npm run reset-passwordముందుగా మీ నోటిఫికేషన్ ఛానెళ్లను జోడించండి, తర్వాత వాటిని పరీక్షించండి
మానిటర్లను జోడించడానికి ముందే అలర్ట్లను సెటప్ చేయండి. దీనివల్ల ప్రతి మానిటర్ను సృష్టించేటప్పుడు మీరు ఒక ఛానెల్ను అటాచ్ చేయవచ్చు. Settings ఆపై Notifications ఆపై Setup Notificationకు వెళ్లండి. ప్రతి ఛానెల్లోని Test బటన్తో సందేశం చేరుతుందో లేదో నిర్ధారించుకోండి. పరీక్షించని నోటిఫికేషన్ అనేది ఒక సెటప్ నిశ్శబ్దంగా విఫలమయ్యే రెండవ అత్యంత సాధారణ మార్గం.
ఇమెయిల్ (SMTP). host, port, encryption, username, password, ఒక From మరియు ఒక To నింపండి. పనిచేసే రెండు కాంబినేషన్లు 465తో "Secure" అనేది TLS/SSLకు సెట్ చేయబడి ఉండటం, లేదా 587తో STARTTLS ఉండటం. రెండు-దశల ప్రామాణీకరణ ఉన్న Gmail మరియు చాలా ప్రొవైడర్ల కోసం మీరు తప్పనిసరిగా ఒక app passwordను సృష్టించాలి. సాధారణ అకౌంట్ పాస్వర్డ్ Error: Invalid login: 535-5.7.8 Username and Password not acceptedను రిటర్న్ చేస్తుంది.
Telegram. @BotFatherకు సందేశం పంపండి, /newbotను పంపండి, బాట్ టోకెన్ను కాపీ చేయండి. మీ చాట్ ID కోసం, కొత్త బాట్కు ఒకసారి సందేశం పంపండి, https://api.telegram.org/bot<token>/getUpdatesను తెరవండి, మరియు JSON నుండి chat.idను చదవండి. మీరు ముందుగా సందేశం పంపని బాట్కు ఖాళీ getUpdates ఉంటుంది మరియు పంపడానికి ఎక్కడా ఉండదు.
Discord. ఛానెల్లో, Edit Channel ఆపై Integrations ఆపై Webhooks ఆపై New Webhookను తెరవండి, URLను కాపీ చేయండి, మరియు దానిని ఒక Discord నోటిఫికేషన్గా పేస్ట్ చేయండి.
జనరిక్ webhook. మరేదైనా కోసం, ఒక Slack ఇన్కమింగ్ webhook, ఒక కస్టమ్ ఎండ్పాయింట్, ఒక హోమ్-ఆటోమేషన్ హుక్ వంటి వాటి కోసం, Webhook రకం మీరు అందించిన URLకి ఒక JSON పేలోడ్ను POST చేస్తుంది, మరియు బండిల్ చేయబడిన Apprise ఇంటిగ్రేషన్ జాబితాలోని తొంభై పైచిలుకు ఇతర సర్వీసులలో చాలా వరకు కవర్ చేస్తుంది.
మానిటర్లను జోడించండి, ఒక్కో రకం ఒకేసారిగా
Add New Monitor ను క్లిక్ చేయండి, ఒక రకాన్ని ఎంచుకుని, Friendly Name, Check Interval (60 సెకన్లు సరైనది), Retries ("down" అనే స్థితికి ముందు వరుసగా వచ్చే వైఫల్యాలు; ఒక ప్యాకెట్ పోవడం వల్ల అలర్ట్ రాకుండా ఉండటానికి 2 లేదా 3 గా ఉంచండి), మరియు ప్రారంభించాల్సిన నోటిఫికేషన్లను సెట్ చేయండి. మీరు ఉపయోగించే రకాలు:
- HTTP(s). పూర్తి URL. అప్ అంటే ఆమోదించబడిన స్టేటస్ కోడ్ (డిఫాల్ట్గా 200-299;
301లేదా401మీకు సాధారణమైతే Accepted Status Codes కింద దాన్ని విస్తరించండి). వెబ్సైట్లు మరియు APIల కోసం ఇది మీ ప్రధాన సాధనం. - HTTP(s) - Keyword. అదే అభ్యర్థన, కానీ "అప్" అయ్యేందుకు బాడీలో ఒక స్ట్రింగ్ ఉండాలి, లేదా Invert లేకుండా ఉండాలి. ఇది సైట్
200 OKను రిటర్న్ చేస్తూ "Error establishing a database connection" అని చూపించే సందర్భాలను పట్టిస్తుంది, దీన్ని సాధారణ HTTP తనిఖీ ఆరోగ్యంగా ఉందని చెబుతుంది. - TCP Port. హోస్ట్ మరియు పోర్ట్కు ఒక సాధారణ TCP కనెక్షన్, HTTP కాని వాటి కోసం: 22 పై SSH, 5432 పై Postgres, 25 పై SMTP సర్వర్, గేమ్ సర్వర్.
- Ping. ICMP echo: తక్కువ ఖర్చుతో చేరువయ్యే సామర్థ్యం మరియు లేటెన్సీ. కానీ అనేక నెట్వర్క్లు మరియు క్లౌడ్ ఫైర్వాల్లు ICMPని డ్రాప్ చేస్తాయి, కాబట్టి ఎర్రటి పింగ్ మానిటర్ అంటే "హోస్ట్ డౌన్" లేదా "ప్రొవైడర్ పింగ్ను నిరోధిస్తోంది" అని అర్థం; TCP మానిటర్తో నిర్ధారించుకోండి.
- DNS. మీరు పేర్కొన్న రిజాల్వర్తో ఒక రికార్డ్ను (A, AAAA, MX, TXT మొదలైనవి) పరిష్కరిస్తుంది, మరియు సమాధానాన్ని నిర్ధారించగలదు, రిజిస్ట్రార్ లేదా DNS అవుటేజ్ను ముందుగా పట్టిస్తుంది.
- Push. లోపలి నుండి బయటకు పనిచేసే మానిటర్, దీన్ని తర్వాత వివరిస్తాము.
ఒక cron జాబ్ను పుష్ (హార్ట్బీట్) మానిటర్తో పర్యవేక్షించడం
పైన ఉన్న ప్రతి మానిటర్ బయట నుండి మీ సర్వీస్లోకి చేరుకుంటుంది. ఒక పుష్ మానిటర్ వేరే విధంగా పనిచేస్తుంది: Uptime Kuma వేచి ఉంటుంది, మరియు మీ జాబ్ దానిని "నేను నడిచాను" అని చెప్పడానికి కాల్ చేస్తుంది. ఒక బ్యాకప్ లేదా cron పర్యవేక్షించడానికి ఇది మాత్రమే సరైన మార్గం: ఒక HTTP తనిఖీకి ఒక URL స్పందిస్తుందో లేదో తెలుస్తుంది, కానీ జాబ్ పూర్తైందో లేదో జాబ్ మాత్రమే తెలుసుకుంటుంది.
Push రకపు మానిటర్ను సృష్టించండి. Uptime Kuma ఒక ప్రత్యేక URL ను ఉత్పత్తి చేస్తుంది, ఇలా:
https://status.example.com/api/push/j8Xa2Kd9Qe?status=up&msg=OK&ping=Heartbeat Interval ను జాబ్ ఎంత తరచుగా నడుస్తుందో దానికి సమానంగా, కొంచెం అదనపు సమయంతో సర్దుబాటు చేయండి. అప్పుడు స్క్రిప్ట్ చివరలో ఒక వరుస జోడించండి, తద్వారా అది విజయవంతమైనప్పుడు మాత్రమే ఫైర్ అవుతుంది:
#!/usr/bin/env bash
set -euo pipefail
# ... your backup or job runs here; set -e aborts on any failure ...
curl -fsS --retry 3 "https://status.example.com/api/push/j8Xa2Kd9Qe?status=up&msg=backup+ok&ping="జాబ్ విఫలమైతే, set -e curl కు ముందే ఆగిపోతుంది; బాక్స్ డౌన్ అయితే, అది కూడా అసలు నడవదు. రెండు సందర్భాల్లోనూ హార్ట్బీట్ ఆగిపోతుంది, మరియు ఇంటర్వల్-ప్లస్-రీట్రీస్ విండో గడిచిన తర్వాత, Uptime Kuma మానిటర్ను down కు మారుస్తుంది మరియు మీకు అలర్ట్ పంపుతుంది. ఆ పుష్ టోకెన్ను రహస్యంగా పరిగణించండి: దాని ఉన్న ఎవరైనా ఒక ఆరోగ్యకరమైన బీట్ను నకిలీ చేయగలరు.
పబ్లిక్ స్టేటస్ పేజీని సృష్టించండి
స్టేటస్ పేజీ అనేది వినియోగదారుల కోసం కనిపించే విభాగం. ఇది ఏయే సేవలు అందుబాటులో ఉన్నాయో మరియు వాటి ఇటీవలి చరిత్రను చూపిస్తుంది. మీ డ్యాష్బోర్డ్ను బహిర్గతం చేయదు. Status Pages ఆపై New Status Pageకి వెళ్లండి. ఒక పేరు మరియు స్లగ్ను ఇవ్వండి (పబ్లిక్ పాత్, ఉదాహరణకు /status/main). మీకు కావలసిన మానిటర్లను "Websites" మరియు "APIs" వంటి గ్రూపులలోకి లాగండి. లోగో మరియు స్వల్ప వివరణను జోడించి, Save చేయండి. మీరు ఈ పేజీని దాని స్వంత డొమైన్కు కూడా బైండ్ చేయవచ్చు. దీనివల్ల status.example.com నేరుగా దానిని అందిస్తుంది.
రెండు జాగ్రత్తలు: పబ్లిక్గా చేయడానికి మీరు సిద్ధంగా ఉన్న మానిటర్లను మాత్రమే జోడించండి. ఎందుకంటే ఒక స్టేటస్ పేజీ ఒక సేవ ఉనికిని మరియు అది అందుబాటులో ఉందో లేదో బయటపెడుతుంది. మరియు స్టేటస్ పేజీ ఉద్దేశపూర్వకంగా పబ్లిక్గా ఉంటుంది మరియు దానికి ఆథెంటికేషన్ అవసరం లేదు, అదే సమయంలో డ్యాష్బోర్డ్ మీ లాగిన్ వెనుకే ఉంటుంది.
దీన్ని TLSతో కూడిన రివర్స్ ప్రాక్సీ వెనుక ఉంచండి, మరియు వెబ్సాకెట్లను గుర్తించండి
పబ్లిక్ ఇన్స్టెన్స్ కోసం, TLS మరియు హోస్ట్నేమ్ కోసం లూప్బ్యాక్-బౌండ్ కంటైనర్ ముందు ఒక రివర్స్ ప్రాక్సీని ఉంచండి. అందరినీ ఇబ్బందికి గురిచేసే వివరం: Uptime Kuma UI అనేది లైవ్ Socket.IO యాప్, కాబట్టి ప్రాక్సీ తప్పనిసరిగా WebSocket కనెక్షన్ను అప్గ్రేడ్ చేయాలి. దీన్ని వదిలేస్తే పేజీ లోడ్ అవుతుంది కానీ ఎప్పటికీ కనెక్ట్ కాదు; డాష్బోర్డ్ "Connecting..." అనే స్థితిలోనే ఉండిపోతుంది, లైవ్ హార్ట్బీట్లు అప్డేట్ కావు, మరియు బ్రౌజర్ కన్సోల్లో WebSocket connection to 'wss://.../socket.io/...' failed కనిపిస్తుంది.
nginx మరియు certbot ఇన్స్టాల్ చేయండి, తర్వాత లూప్బ్యాక్ పోర్ట్కు ప్రాక్సీ చేసే vhost రాయండి. ప్రస్తుతానికి దీన్ని పోర్ట్ 80లో ఉంచండి, తర్వాత certbot TLS జోడించనివ్వండి; ఛాలెంజ్, రెన్యూవల్ టైమర్ మరియు దాని వైఫల్య రకాలు certbot మరియు nginxతో Let's Encrypt సర్టిఫికేట్లను జారీ చేయడంలో వివరించబడ్డాయి.
sudo apt install -y nginx certbot python3-certbot-nginxదీన్ని /etc/nginx/sites-available/status.example.comగా సేవ్ చేయండి; ముఖ్యమైనవి ఆ రెండు WebSocket లైన్లే:
server {
listen 80;
server_name status.example.com;
location / {
proxy_pass http://127.0.0.1:3001;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
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 $scheme;
proxy_read_timeout 3600s;
}
}సైట్ను ఎనేబుల్ చేయండి, కాన్ఫిగ్ టెస్ట్ చేయండి, తర్వాత certbot బ్లాక్ను 443లో లిసన్ చేసేలా రాయడానికి, సర్టిఫికేట్ చేర్చడానికి మరియు HTTP-to-HTTPS రీడైరెక్ట్ జోడించడానికి అనుమతించండి:
sudo ln -s /etc/nginx/sites-available/status.example.com /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d status.example.comUpgrade మరియు Connection "upgrade" జంట ముఖ్యమైనది, మరియు proxy_read_timeout 3600s nginx ఆ దీర్ఘకాలిక సాకెట్ను విడదీయకుండా ఆపుతుంది; certbot రెండింటినీ అది సృష్టించే 443 బ్లాక్లోకి కాపీ చేస్తుంది. ఒక ప్రాక్సీ వెనుక మీరు ఇప్పటికే అనేక కంటైనర్లను నడుపుతుంటే, Traefik ద్వారా ఆటోమేటిక్ TLSతో వాటిని రూటింగ్ చేయడం కంటైనర్ లేబుల్లతో అదే పనిని చేస్తుంది మరియు డిఫాల్ట్గా WebSocket అప్గ్రేడ్లను ఫార్వర్డ్ చేస్తుంది.
మొత్తం vhostకు బేసిక్-ఆథ్ ఉంచవద్దు, ఎందుకంటే అది పబ్లిక్ స్టేటస్ పేజీ మరియు /api/push ఎండ్పాయింట్ను కూడా లాక్ చేస్తుంది. Uptime Kuma యొక్క అంతర్గత లాగిన్ను ఉంచండి, అది ఇంటర్నెట్-ఫేసింగ్ అయితే పునరావృత లాగిన్ వైఫల్యాల కోసం fail2ban పర్యవేక్షణ జోడించండి, మరియు డాష్బోర్డ్కు పబ్లిక్ అవసరం లేకపోతే, ప్రాక్సీని వదిలేసి VPN ద్వారా దానిని యాక్సెస్ చేయండి.
సర్టిఫికేట్ గడువు పర్యవేక్షణ, సరైన విధంగా
HTTP(s) మానిటర్ ఒక TLS సర్టిఫికేట్ గడువు ముగిసే ముందు మిమ్మల్ని హెచ్చరించగలదు: Certificate Expiry Notification ఎంచుకుంటే, Uptime Kuma నిర్దేశించిన రోజుల ముందే హెచ్చరిక ఇస్తుంది. రెండు తప్పులు దీన్ని తప్పుగా చదవడానికి కారణమవుతాయి. IP కాదు, hostname ద్వారా పర్యవేక్షించండి; లేదంటే SNI లేని అభ్యర్థనకు సర్వర్ యొక్క డిఫాల్ట్ సర్టిఫికేట్ వస్తుంది మరియు మీకు Hostname/IP does not match certificate's altnames కనిపిస్తుంది. గడువు హెచ్చరికలు కావాల్సిన మానిటర్పై Ignore TLS/SSL Error ఎంచుకోకండి: ఆ టోగుల్ సెల్ఫ్-సైన్డ్ అంతర్గత హోస్టుల కోసం (unable to verify the first certificate, DEPTH_ZERO_SELF_SIGNED_CERT), కానీ అది Uptime Kuma సర్టిఫికేట్ను అస్సలు తనిఖీ చేయకుండా ఆపేస్తుంది, గడువు తనిఖీతో సహా.
బ్యాకప్లు: అది ఒక డైరెక్టరీ
ప్రతిదీ /app/data లో ఉంటుంది కాబట్టి, బ్యాకప్ అనేది కంటైనర్ ఆగివున్నప్పుడు ఆ వాల్యూమ్ను కాపీ చేయడం. దీనివల్ల SQLite ఫైల్ స్థిరంగా ఉంటుంది:
cd /srv/uptime-kuma
sudo docker compose stop
sudo docker run --rm \
-v uptime-kuma_kuma-data:/data \
-v /var/backups/kuma:/backup \
alpine tar czf /backup/kuma-$(date -u +%Y%m%dT%H%M%SZ).tgz -C /data .
sudo docker compose startముందుగా docker volume ls | grep kuma తో వాల్యూమ్ యొక్క నిజమైన పేరును నిర్ధారించుకోండి. ఎందుకంటే Compose దానికి ప్రాజెక్ట్ డైరెక్టరీ పేరును ప్రిఫిక్స్గా చేరుస్తుంది. తర్వాత ఆ tarball ను సర్వర్ నుండి బయటకు కాపీ చేయండి. ఒకే VPS లో ఉన్న బ్యాకప్ అనేది కాపీ మాత్రమే, నిజమైన బ్యాకప్ కాదు. రిస్టోర్ చేయడం అనేది దీనికి విరుద్ధం: స్టాక్ను ఆపండి, ఖాళీ /app/data వాల్యూమ్లోకి ఎక్స్ట్రాక్ట్ చేయండి, దాన్ని ప్రారంభించండి.
అప్గ్రేడ్లు
అప్గ్రేడ్లు ఒక ఇమేజ్ పుల్:
cd /srv/uptime-kuma
sudo docker compose pull
sudo docker compose up -dకొత్త కంటైనర్ మొదటి ప్రారంభంలో ఏవైనా డేటాబేస్ మైగ్రేషన్లను నడుపుతుంది; docker compose logs -f ను పరిశీలించండి. పుల్ చేయడానికి ముందు పై బ్యాకప్ను తీసుకోండి, మరియు ఒక మేజర్ ట్యాగ్ లోపలే ఉండండి: :1 నుండి :2 కు మారడం ఒక వన్-వే మైగ్రేషన్, కాబట్టి ముందుగా బ్యాకప్ తీసుకోండి మరియు విడుదల గమనికలను తనిఖీ చేయండి.
వైఫల్య రకాలు, మీరు చూసే స్ట్రింగ్లతో
localhost వైపు ఉన్న మానిటర్పై తప్పుడు "down". మానిటర్ ఎర్రగా మారి timeout of 48000ms exceeded లేదా connect ETIMEDOUT చూపిస్తుంది, అయినప్పటికీ సర్వీస్ మీ లాప్టాప్ నుండి స్పందిస్తుంది. అది Uptime Kuma నడుస్తున్న అదే హోస్ట్ను లక్ష్యంగా చేసుకుంటే, CPU లేదా మెమరీ స్పైక్ చెక్ను ఆకలిబాటకు గురిచేసింది, లక్ష్యం కాదు. మానిటర్ను వేరే VPSకి తరలించి, పబ్లిక్ హోస్ట్నేమ్ను లక్ష్యంగా చేయండి.
connect ECONNREFUSED 127.0.0.1:443 (లేదా ఏదైనా పోర్ట్). ఆ పోర్ట్పై ఏదీ లిసన్ చేయడం లేదు: సర్వీస్ డౌన్ అయివుండవచ్చు, లేదా మీరు కంటైనర్ లోపల నుండి localhost మానిటర్ చేశారు, అక్కడ 127.0.0.1 అనేది మీ సర్వర్ కాదు, కంటైనర్. పబ్లిక్ హోస్ట్నేమ్ను మానిటర్ చేయండి, లూప్బ్యాక్ను కాదు.
ఈమెయిల్ టెస్ట్పై Invalid login: 535-5.7.8 Username and Password not accepted. SMTP ఆధారాలు తప్పు, లేదా ప్రొవైడర్కు యాప్-స్పెసిఫిక్ పాస్వర్డ్ కావాలి, కానీ మీ అకౌంట్ పాస్వర్డ్ వచ్చింది. యాప్ పాస్వర్డ్ను సృష్టించి దాన్ని అతికించండి.
ఈమెయిల్ టెస్ట్పై connect ETIMEDOUT లేదా queryA ETIMEDOUT <host>. పోర్ట్ తప్పు, లేదా ప్రొవైడర్ అవుట్బౌండ్ SMTPను బ్లాక్ చేస్తోంది. 465 లేదా 587 అనేది Secure/STARTTLS సెట్టింగ్తో సరిపోలుతోందని నిర్ధారించుకోండి, మరియు హోస్ట్ నుండి nc -vz smtp.example.com 587తో టెస్ట్ చేయండి. చాలా ప్రొవైడర్లు అవుట్బౌండ్ 25ను బ్లాక్ చేస్తాయి, కొందరు మీరు అడిగే వరకు సబ్మిషన్ పోర్ట్లను బ్లాక్ చేస్తారు.
ఈమెయిల్ టెస్ట్పై self signed certificate లేదా unable to verify the first certificate. మీ SMTP సర్వర్ Node ట్రస్ట్ చేయని సర్టిఫికేట్ను సమర్పిస్తోంది; దాన్ని దాచడం కాకుండా మెయిల్ సర్వర్ సర్టిఫికేట్ను సరిచేయండి.
డాష్బోర్డ్ "Connecting..." వద్ద ఆగిపోయింది, కన్సోల్ WebSocket connection ... failed చూపిస్తోంది. రివర్స్ ప్రాక్సీ WebSocketను అప్గ్రేడ్ చేయడం లేదు. nginxపై Upgrade మరియు Connection "upgrade" హెడర్లను జోడించండి, లేదా Traefik లేదా Caddy వంటి అవి డిఫాల్ట్గా ఫార్వర్డ్ చేసే ప్రాక్సీని ఉపయోగించండి. HTML లోడ్ అవుతుంది ఎందుకంటే అది సాధారణ HTTP GET; అప్గ్రేడ్ అవసరం లైవ్ సాకెట్కే.
సర్ట్-ఎక్స్పైరీ మానిటర్ ఎప్పుడూ హెచ్చరించదు, లేదా తప్పుగా హెచ్చరిస్తుంది. Ignore TLS/SSL Error టిక్ చేయబడి ఉంది, ఇది సర్ట్ చెకింగ్ను డిసేబుల్ చేస్తుంది, లేదా మానిటర్ ఒక IPను లక్ష్యంగా చేసుకుని SNI లేకుండా తప్పు సర్టిఫికేట్ను చదువుతోంది, Hostname/IP does not match certificate's altnames చూపిస్తోంది. ఇగ్నోర్ టిక్ తీసేయండి, హోస్ట్నేమ్ ద్వారా మానిటర్ చేయండి.
లాగ్లలో SQLITE_BUSY లేదా database disk image is malformed. /app/data వాల్యూమ్ సరైన ఫైల్ లాకింగ్ లేని ఫైల్సిస్టమ్పై ఉంది, సాధారణంగా NFS; దాన్ని లోకల్ Docker వాల్యూమ్కి తరలించి బ్యాకప్ నుండి రిస్టోర్ చేయండి.
FAQ
నా అప్టైమ్ మానిటర్ను ఎక్కడ నడపాలి?
మీరు పర్యవేక్షించే సర్వర్ల కంటే వేరే సర్వర్లో నడపండి. ఆ సర్వర్ వేరే ప్రొవైడర్ది లేదా వేరే ప్రాంతానిది అయితే మంచిది. మీ వినియోగదారులు చేసే విధంగానే, పబ్లిక్ ఇంటర్నెట్ ద్వారా హోస్ట్నేమ్తో వాటిని చేరుకోండి. మానిటర్ తన లక్ష్యాలతో అదే సర్వర్ను పంచుకుంటే, సర్వర్ను క్రాష్ చేసే ఔటేజ్ మానిటర్ను కూడా క్రాష్ చేస్తుంది. అలాగే, ఓవర్లోడ్ అయిన హోస్ట్, సరిగ్గా పనిచేస్తున్న సర్వీస్లను కూడా "డౌన్" అని తప్పుగా సంకేతం ఇస్తుంది. ఒక చిన్న వేరు VPS ఈ రెండు సమస్యలనూ నివారిస్తుంది.
నేను Telegram లేదా ఈమెయిల్పై అలర్ట్లను ఎలా పొందగలను?
Settings అని క్లిక్ చేసి ఆపై Notifications కివెళ్లి ఛానెల్ను జోడించండి. తర్వాత దాన్ని ప్రతి మానిటర్కు అటాచ్ చేయండి. Telegram కోసం, @BotFather తో ఒక బాట్ను సృష్టించండి. ఆపై https://api.telegram.org/bot<token>/getUpdates నుండి chat.id ను చదవండి. ఈమెయిల్ కోసం, SSL కు 465 ఉపయోగించండి లేదా STARTTLS కు 587 ఉపయోగించండి. మీ ప్రొవైడర్ ద్వి-దశ ప్రామాణీకరణను వాడితే యాప్ పాస్వర్డ్ను ఉపయోగించండి. Test నొక్కండి. దానిపై ఆధారపడే ముందు సందేశం చేరుకుంటుందో లేదో నిర్ధారించుకోండి.
Uptime Kuma ఒక cron జాబ్ లేదా బ్యాకప్ స్క్రిప్ట్ను మానిటర్ చేయగలదా?
అవును, అది Push మానిటర్. Uptime Kuma మీకు ఒక URL ఇస్తుంది. స్క్రిప్ట్ చివరలో మీరు దాన్ని curl చేస్తారు. అందువల్ల అది విజయవంతమైనప్పుడు మాత్రమే ట్రిగ్గర్ అవుతుంది. జాబ్ విఫలమైతే లేదా సర్వర్ డౌన్ అయితే హార్ట్బీట్ ఎప్పటికీ రాదు. ఇంటర్వల్ గడిచిన తర్వాత మీకు అలర్ట్ వస్తుంది. ఒక షెడ్యూల్ చేసిన జాబ్ నిజంగా నడిచిందో లేదో తెలుసుకోవడానికి ఇది ఒకే ఒక్క విశ్వసనీయ మార్గం. ఎందుకంటే బాహ్య తనిఖీ దాని లోపలిని చూడలేదు.
Uptime Kuma మరియు Zabbix, నేను దేనిని నడపాలి?
Uptime Kuma పది నిమిషాల్లో "అది బయట నుండి అప్లో ఉందా, మరియు అది నాకు అలర్ట్ పంపిందా" అనే ప్రశ్నకు సమాధానం ఇస్తుంది. దీనికి దాదాపు ఎలాంటి వనరులు అవసరం లేదు. పైగా ఇది ఒక స్టేటస్ పేజీని కలిగి ఉంటుంది. ఇది CPU, మెమరీ మరియు డిస్క్ ట్రెండ్లు లేదా ఫ్లీట్-వైడ్ థ్రెషోల్డ్ల వంటి లోతైన మెట్రిక్లను సేకరించదు. దాని కోసం, పూర్తి Zabbix మానిటరింగ్ సర్వర్ అనేది భారీగా, ఏజెంట్ ఆధారిత సాధనం. చాలా మంది వ్యక్తులు రెండింటినీ నడుపుతారు. ఏది నడపాలో ఇంకా నిర్ణయించుకోలేదా? 2026లో సెల్ఫ్-హోస్ట్ చేయాల్సిన వాటి సమీక్ష మానిటరింగ్ను సందర్భంలో చూపిస్తుంది.