[{"data":1,"prerenderedAt":1315},["ShallowReactive",2],{"navigation_docs":3,"-platform-monitoring":204,"-platform-monitoring-surround":1310},[4,40,69,82,91,116,129,146,167],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting Started",false,"\u002Fgetting-started","1.getting-started",[10,15,20,25,30,35],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":24},"Quick Start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start","i-lucide-rocket",{"title":26,"path":27,"stem":28,"icon":29},"Project Structure","\u002Fgetting-started\u002Fproject-structure","1.getting-started\u002F4.project-structure","i-lucide-folder-tree",{"title":31,"path":32,"stem":33,"icon":34},"First Deployment","\u002Fgetting-started\u002Ffirst-deployment","1.getting-started\u002F5.first-deployment","i-lucide-upload-cloud",{"title":36,"path":37,"stem":38,"icon":39},"Troubleshooting","\u002Fgetting-started\u002Ftroubleshooting","1.getting-started\u002F6.troubleshooting","i-lucide-wrench",{"title":41,"children":42,"path":67,"stem":68,"page":6},"Platform",[43,47,51,55,59,63],{"title":44,"path":45,"stem":46},"Dashboard","\u002Fplatform\u002Fdashboard","2.platform\u002F1.dashboard",{"title":48,"path":49,"stem":50},"Marketplace","\u002Fplatform\u002Fmarketplace","2.platform\u002F2.marketplace",{"title":52,"path":53,"stem":54},"Monitoring & Metrics","\u002Fplatform\u002Fmonitoring","2.platform\u002F3.monitoring",{"title":56,"path":57,"stem":58},"Projects","\u002Fplatform\u002Fprojects","2.platform\u002F4.projects",{"title":60,"path":61,"stem":62},"Services","\u002Fplatform\u002Fservices","2.platform\u002F5.services",{"title":64,"path":65,"stem":66},"Logs","\u002Fplatform\u002Flogs","2.platform\u002F6.logs","\u002Fplatform","2.platform",{"title":70,"children":71,"path":80,"stem":81,"page":6},"CLI",[72,76],{"title":73,"path":74,"stem":75},"CLI Installation","\u002Fcli\u002Finstallation","3.cli\u002F1.installation",{"title":77,"path":78,"stem":79},"Commands Reference","\u002Fcli\u002Fcommands","3.cli\u002F2.commands","\u002Fcli","3.cli",{"title":83,"children":84,"path":89,"stem":90,"page":6},"TUI",[85],{"title":86,"path":87,"stem":88},"TUI Overview","\u002Ftui\u002Foverview","4.tui\u002F1.overview","\u002Ftui","4.tui",{"title":92,"children":93,"path":114,"stem":115,"page":6},"Docker",[94,98,102,106,110],{"title":95,"path":96,"stem":97},"Docker Containers","\u002Fdocker\u002Fcontainers","5.docker\u002F1.containers",{"title":99,"path":100,"stem":101},"Docker Images","\u002Fdocker\u002Fimages","5.docker\u002F2.images",{"title":103,"path":104,"stem":105},"Docker Compose","\u002Fdocker\u002Fcompose","5.docker\u002F3.compose",{"title":107,"path":108,"stem":109},"Docker Volumes","\u002Fdocker\u002Fvolumes","5.docker\u002F4.volumes",{"title":111,"path":112,"stem":113},"Docker Networks","\u002Fdocker\u002Fnetworks","5.docker\u002F5.networks","\u002Fdocker","5.docker",{"title":117,"children":118,"path":127,"stem":128,"page":6},"PM2",[119,123],{"title":120,"path":121,"stem":122},"Process Management","\u002Fpm2\u002Fprocess-management","6.pm2\u002F1.process-management",{"title":124,"path":125,"stem":126},"Zero-Downtime Deployments","\u002Fpm2\u002Fzero-downtime","6.pm2\u002F2.zero-downtime","\u002Fpm2","6.pm2",{"title":130,"children":131,"path":144,"stem":145,"page":6},"VPS",[132,136,140],{"title":133,"path":134,"stem":135},"VPS Management","\u002Fvps\u002Fssh-management","7.vps\u002F1.ssh-management",{"title":137,"path":138,"stem":139},"SSH Access","\u002Fvps\u002Fssh","7.vps\u002F2.ssh",{"title":141,"path":142,"stem":143},"Firewall","\u002Fvps\u002Ffirewall","7.vps\u002F3.firewall","\u002Fvps","7.vps",{"title":147,"children":148,"path":165,"stem":166,"page":6},"Deployment",[149,153,157,161],{"title":150,"path":151,"stem":152},"Production Setup","\u002Fdeployment\u002Fproduction-setup","8.deployment\u002F1.production-setup",{"title":154,"path":155,"stem":156},"Scaling","\u002Fdeployment\u002Fscaling","8.deployment\u002F2.scaling",{"title":158,"path":159,"stem":160},"GitHub Actions CI\u002FCD","\u002Fdeployment\u002Fgithub-actions","8.deployment\u002F3.github-actions",{"title":162,"path":163,"stem":164},"Security","\u002Fdeployment\u002Fsecurity","8.deployment\u002F4.security","\u002Fdeployment","8.deployment",{"title":168,"children":169,"path":202,"stem":203,"page":6},"Reference",[170,174,178,182,186,190,194,198],{"title":171,"path":172,"stem":173},"Architecture","\u002Freference\u002Farchitecture","9.reference\u002F1.architecture",{"title":175,"path":176,"stem":177},"CLI Reference","\u002Freference\u002Fcli-reference","9.reference\u002F2.cli-reference",{"title":179,"path":180,"stem":181},"Environment Variables","\u002Freference\u002Fenvironment-variables","9.reference\u002F3.environment-variables",{"title":183,"path":184,"stem":185},"API Reference","\u002Freference\u002Fapi-reference","9.reference\u002F4.api-reference",{"title":187,"path":188,"stem":189},"Webhooks","\u002Freference\u002Fwebhooks","9.reference\u002F5.webhooks",{"title":191,"path":192,"stem":193},"Authentication","\u002Freference\u002Fauthentication","9.reference\u002F6.authentication",{"title":195,"path":196,"stem":197},"Configuration","\u002Freference\u002Fconfiguration","9.reference\u002F7.configuration",{"title":199,"path":200,"stem":201},"API Overview","\u002Freference\u002Fapi","9.reference\u002F8.api","\u002Freference","9.reference",{"id":205,"title":52,"body":206,"description":1304,"extension":1305,"links":1306,"meta":1307,"navigation":316,"path":53,"seo":1308,"stem":54,"__hash__":1309},"docs\u002F2.platform\u002F3.monitoring.md",{"type":207,"value":208,"toc":1280},"minimark",[209,213,217,222,225,272,276,281,398,402,483,487,552,556,560,661,665,722,726,730,733,830,834,855,859,940,944,948,1041,1045,1048,1105,1109,1112,1215,1219,1222,1237,1241,1261,1264,1276],[210,211,52],"h1",{"id":212},"monitoring-metrics",[214,215,216],"p",{},"Real-time visibility into your infrastructure and applications.",[218,219,221],"h2",{"id":220},"dashboard-metrics","Dashboard Metrics",[214,223,224],{},"The SkyPort dashboard displays:",[226,227,228,236,242,248,254,260,266],"ul",{},[229,230,231,235],"li",{},[232,233,234],"strong",{},"CPU Usage"," - System and per-container CPU",[229,237,238,241],{},[232,239,240],{},"Memory Usage"," - System and per-container memory",[229,243,244,247],{},[232,245,246],{},"Disk I\u002FO"," - Read\u002Fwrite operations",[229,249,250,253],{},[232,251,252],{},"Network I\u002FO"," - Incoming\u002Foutgoing traffic",[229,255,256,259],{},[232,257,258],{},"Container Status"," - Running, stopped, error states",[229,261,262,265],{},[232,263,264],{},"Process Health"," - PM2 process status and restarts",[229,267,268,271],{},[232,269,270],{},"Uptime"," - Application and service uptime",[218,273,275],{"id":274},"cli-metrics","CLI Metrics",[277,278,280],"h3",{"id":279},"system-metrics","System Metrics",[282,283,288],"pre",{"className":284,"code":285,"language":286,"meta":287,"style":287},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# View system metrics\nskyport metrics\n\n# CPU usage\nskyport metrics cpu\n\n# Memory usage\nskyport metrics memory\n\n# Disk usage\nskyport metrics disk\n\n# Network metrics\nskyport metrics network\n","bash","",[289,290,291,300,311,318,324,335,340,346,356,361,367,377,382,388],"code",{"__ignoreMap":287},[292,293,296],"span",{"class":294,"line":295},"line",1,[292,297,299],{"class":298},"sHwdD","# View system metrics\n",[292,301,303,307],{"class":294,"line":302},2,[292,304,306],{"class":305},"sBMFI","skyport",[292,308,310],{"class":309},"sfazB"," metrics\n",[292,312,314],{"class":294,"line":313},3,[292,315,317],{"emptyLinePlaceholder":316},true,"\n",[292,319,321],{"class":294,"line":320},4,[292,322,323],{"class":298},"# CPU usage\n",[292,325,327,329,332],{"class":294,"line":326},5,[292,328,306],{"class":305},[292,330,331],{"class":309}," metrics",[292,333,334],{"class":309}," cpu\n",[292,336,338],{"class":294,"line":337},6,[292,339,317],{"emptyLinePlaceholder":316},[292,341,343],{"class":294,"line":342},7,[292,344,345],{"class":298},"# Memory usage\n",[292,347,349,351,353],{"class":294,"line":348},8,[292,350,306],{"class":305},[292,352,331],{"class":309},[292,354,355],{"class":309}," memory\n",[292,357,359],{"class":294,"line":358},9,[292,360,317],{"emptyLinePlaceholder":316},[292,362,364],{"class":294,"line":363},10,[292,365,366],{"class":298},"# Disk usage\n",[292,368,370,372,374],{"class":294,"line":369},11,[292,371,306],{"class":305},[292,373,331],{"class":309},[292,375,376],{"class":309}," disk\n",[292,378,380],{"class":294,"line":379},12,[292,381,317],{"emptyLinePlaceholder":316},[292,383,385],{"class":294,"line":384},13,[292,386,387],{"class":298},"# Network metrics\n",[292,389,391,393,395],{"class":294,"line":390},14,[292,392,306],{"class":305},[292,394,331],{"class":309},[292,396,397],{"class":309}," network\n",[277,399,401],{"id":400},"container-monitoring","Container Monitoring",[282,403,405],{"className":284,"code":404,"language":286,"meta":287,"style":287},"# Container stats\nskyport docker stats\n\n# Specific container\nskyport docker stats container-name\n\n# View container resource limits\nskyport docker inspect container-name | grep -E \"Memory|Cpu\"\n",[289,406,407,412,422,426,431,443,447,452],{"__ignoreMap":287},[292,408,409],{"class":294,"line":295},[292,410,411],{"class":298},"# Container stats\n",[292,413,414,416,419],{"class":294,"line":302},[292,415,306],{"class":305},[292,417,418],{"class":309}," docker",[292,420,421],{"class":309}," stats\n",[292,423,424],{"class":294,"line":313},[292,425,317],{"emptyLinePlaceholder":316},[292,427,428],{"class":294,"line":320},[292,429,430],{"class":298},"# Specific container\n",[292,432,433,435,437,440],{"class":294,"line":326},[292,434,306],{"class":305},[292,436,418],{"class":309},[292,438,439],{"class":309}," stats",[292,441,442],{"class":309}," container-name\n",[292,444,445],{"class":294,"line":337},[292,446,317],{"emptyLinePlaceholder":316},[292,448,449],{"class":294,"line":342},[292,450,451],{"class":298},"# View container resource limits\n",[292,453,454,456,458,461,464,468,471,474,477,480],{"class":294,"line":348},[292,455,306],{"class":305},[292,457,418],{"class":309},[292,459,460],{"class":309}," inspect",[292,462,463],{"class":309}," container-name",[292,465,467],{"class":466},"sMK4o"," |",[292,469,470],{"class":305}," grep",[292,472,473],{"class":309}," -E",[292,475,476],{"class":466}," \"",[292,478,479],{"class":309},"Memory|Cpu",[292,481,482],{"class":466},"\"\n",[277,484,486],{"id":485},"process-monitoring","Process Monitoring",[282,488,490],{"className":284,"code":489,"language":286,"meta":287,"style":287},"# PM2 process stats\nskyport pm2 monit\n\n# Specific process details\nskyport pm2 describe process-name\n\n# Process logs\nskyport pm2 logs process-name -f\n",[289,491,492,497,507,511,516,528,532,537],{"__ignoreMap":287},[292,493,494],{"class":294,"line":295},[292,495,496],{"class":298},"# PM2 process stats\n",[292,498,499,501,504],{"class":294,"line":302},[292,500,306],{"class":305},[292,502,503],{"class":309}," pm2",[292,505,506],{"class":309}," monit\n",[292,508,509],{"class":294,"line":313},[292,510,317],{"emptyLinePlaceholder":316},[292,512,513],{"class":294,"line":320},[292,514,515],{"class":298},"# Specific process details\n",[292,517,518,520,522,525],{"class":294,"line":326},[292,519,306],{"class":305},[292,521,503],{"class":309},[292,523,524],{"class":309}," describe",[292,526,527],{"class":309}," process-name\n",[292,529,530],{"class":294,"line":337},[292,531,317],{"emptyLinePlaceholder":316},[292,533,534],{"class":294,"line":342},[292,535,536],{"class":298},"# Process logs\n",[292,538,539,541,543,546,549],{"class":294,"line":348},[292,540,306],{"class":305},[292,542,503],{"class":309},[292,544,545],{"class":309}," logs",[292,547,548],{"class":309}," process-name",[292,550,551],{"class":309}," -f\n",[218,553,555],{"id":554},"setting-resource-limits","Setting Resource Limits",[277,557,559],{"id":558},"docker-container-limits","Docker Container Limits",[282,561,563],{"className":284,"code":562,"language":286,"meta":287,"style":287},"# Set memory limit\nskyport docker update --memory 512m container-name\n\n# Set CPU limit\nskyport docker update --cpus 1 container-name\n\n# Restart on memory overflow\nskyport docker run -d \\\n  --memory 512m \\\n  --memory-swap 512m \\\n  my-app:latest\n",[289,564,565,570,587,591,596,613,617,622,638,647,656],{"__ignoreMap":287},[292,566,567],{"class":294,"line":295},[292,568,569],{"class":298},"# Set memory limit\n",[292,571,572,574,576,579,582,585],{"class":294,"line":302},[292,573,306],{"class":305},[292,575,418],{"class":309},[292,577,578],{"class":309}," update",[292,580,581],{"class":309}," --memory",[292,583,584],{"class":309}," 512m",[292,586,442],{"class":309},[292,588,589],{"class":294,"line":313},[292,590,317],{"emptyLinePlaceholder":316},[292,592,593],{"class":294,"line":320},[292,594,595],{"class":298},"# Set CPU limit\n",[292,597,598,600,602,604,607,611],{"class":294,"line":326},[292,599,306],{"class":305},[292,601,418],{"class":309},[292,603,578],{"class":309},[292,605,606],{"class":309}," --cpus",[292,608,610],{"class":609},"sbssI"," 1",[292,612,442],{"class":309},[292,614,615],{"class":294,"line":337},[292,616,317],{"emptyLinePlaceholder":316},[292,618,619],{"class":294,"line":342},[292,620,621],{"class":298},"# Restart on memory overflow\n",[292,623,624,626,628,631,634],{"class":294,"line":348},[292,625,306],{"class":305},[292,627,418],{"class":309},[292,629,630],{"class":309}," run",[292,632,633],{"class":309}," -d",[292,635,637],{"class":636},"sTEyZ"," \\\n",[292,639,640,643,645],{"class":294,"line":358},[292,641,642],{"class":309},"  --memory",[292,644,584],{"class":309},[292,646,637],{"class":636},[292,648,649,652,654],{"class":294,"line":363},[292,650,651],{"class":309},"  --memory-swap",[292,653,584],{"class":309},[292,655,637],{"class":636},[292,657,658],{"class":294,"line":369},[292,659,660],{"class":309},"  my-app:latest\n",[277,662,664],{"id":663},"pm2-memory-restart","PM2 Memory Restart",[282,666,670],{"className":667,"code":668,"language":669,"meta":287,"style":287},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u002F\u002F ecosystem.config.js\nmodule.exports = {\n  apps: [\n    {\n      name: 'app',\n      script: 'server.js',\n      max_memory_restart: '500M', \u002F\u002F Restart if exceeds 500MB\n    },\n  ],\n};\n","javascript",[289,671,672,677,682,687,692,697,702,707,712,717],{"__ignoreMap":287},[292,673,674],{"class":294,"line":295},[292,675,676],{},"\u002F\u002F ecosystem.config.js\n",[292,678,679],{"class":294,"line":302},[292,680,681],{},"module.exports = {\n",[292,683,684],{"class":294,"line":313},[292,685,686],{},"  apps: [\n",[292,688,689],{"class":294,"line":320},[292,690,691],{},"    {\n",[292,693,694],{"class":294,"line":326},[292,695,696],{},"      name: 'app',\n",[292,698,699],{"class":294,"line":337},[292,700,701],{},"      script: 'server.js',\n",[292,703,704],{"class":294,"line":342},[292,705,706],{},"      max_memory_restart: '500M', \u002F\u002F Restart if exceeds 500MB\n",[292,708,709],{"class":294,"line":348},[292,710,711],{},"    },\n",[292,713,714],{"class":294,"line":358},[292,715,716],{},"  ],\n",[292,718,719],{"class":294,"line":363},[292,720,721],{},"};\n",[218,723,725],{"id":724},"alerts-notifications","Alerts & Notifications",[277,727,729],{"id":728},"cpu-alerts","CPU Alerts",[214,731,732],{},"Set up alerts when CPU exceeds threshold:",[282,734,736],{"className":284,"code":735,"language":286,"meta":287,"style":287},"# Monitor CPU\nskyport metrics cpu --watch\n\n# Manual alert setup\nif [ $(skyport metrics cpu | grep -oP '\\d+') -gt 80 ]; then\n  notify_alert \"CPU usage high\"\nfi\n",[289,737,738,743,755,759,764,813,825],{"__ignoreMap":287},[292,739,740],{"class":294,"line":295},[292,741,742],{"class":298},"# Monitor CPU\n",[292,744,745,747,749,752],{"class":294,"line":302},[292,746,306],{"class":305},[292,748,331],{"class":309},[292,750,751],{"class":309}," cpu",[292,753,754],{"class":309}," --watch\n",[292,756,757],{"class":294,"line":313},[292,758,317],{"emptyLinePlaceholder":316},[292,760,761],{"class":294,"line":320},[292,762,763],{"class":298},"# Manual alert setup\n",[292,765,766,770,773,776,778,780,782,784,786,789,792,795,798,801,804,807,810],{"class":294,"line":326},[292,767,769],{"class":768},"s7zQu","if",[292,771,772],{"class":466}," [",[292,774,775],{"class":466}," $(",[292,777,306],{"class":305},[292,779,331],{"class":309},[292,781,751],{"class":309},[292,783,467],{"class":466},[292,785,470],{"class":305},[292,787,788],{"class":309}," -oP",[292,790,791],{"class":466}," '",[292,793,794],{"class":309},"\\d+",[292,796,797],{"class":466},"'",[292,799,800],{"class":466},")",[292,802,803],{"class":466}," -gt",[292,805,806],{"class":609}," 80",[292,808,809],{"class":466}," ];",[292,811,812],{"class":768}," then\n",[292,814,815,818,820,823],{"class":294,"line":337},[292,816,817],{"class":305},"  notify_alert",[292,819,476],{"class":466},[292,821,822],{"class":309},"CPU usage high",[292,824,482],{"class":466},[292,826,827],{"class":294,"line":342},[292,828,829],{"class":768},"fi\n",[277,831,833],{"id":832},"memory-alerts","Memory Alerts",[282,835,837],{"className":284,"code":836,"language":286,"meta":287,"style":287},"# Monitor memory\nskyport metrics memory --watch\n",[289,838,839,844],{"__ignoreMap":287},[292,840,841],{"class":294,"line":295},[292,842,843],{"class":298},"# Monitor memory\n",[292,845,846,848,850,853],{"class":294,"line":302},[292,847,306],{"class":305},[292,849,331],{"class":309},[292,851,852],{"class":309}," memory",[292,854,754],{"class":309},[277,856,858],{"id":857},"disk-space-alerts","Disk Space Alerts",[282,860,862],{"className":284,"code":861,"language":286,"meta":287,"style":287},"# Monitor disk\nskyport metrics disk --watch\n\n# Alert if disk > 80%\nif [ $(skyport metrics disk | grep -oP '\\d+') -gt 80 ]; then\n  notify_alert \"Disk space running low\"\nfi\n",[289,863,864,869,880,884,889,925,936],{"__ignoreMap":287},[292,865,866],{"class":294,"line":295},[292,867,868],{"class":298},"# Monitor disk\n",[292,870,871,873,875,878],{"class":294,"line":302},[292,872,306],{"class":305},[292,874,331],{"class":309},[292,876,877],{"class":309}," disk",[292,879,754],{"class":309},[292,881,882],{"class":294,"line":313},[292,883,317],{"emptyLinePlaceholder":316},[292,885,886],{"class":294,"line":320},[292,887,888],{"class":298},"# Alert if disk > 80%\n",[292,890,891,893,895,897,899,901,903,905,907,909,911,913,915,917,919,921,923],{"class":294,"line":326},[292,892,769],{"class":768},[292,894,772],{"class":466},[292,896,775],{"class":466},[292,898,306],{"class":305},[292,900,331],{"class":309},[292,902,877],{"class":309},[292,904,467],{"class":466},[292,906,470],{"class":305},[292,908,788],{"class":309},[292,910,791],{"class":466},[292,912,794],{"class":309},[292,914,797],{"class":466},[292,916,800],{"class":466},[292,918,803],{"class":466},[292,920,806],{"class":609},[292,922,809],{"class":466},[292,924,812],{"class":768},[292,926,927,929,931,934],{"class":294,"line":337},[292,928,817],{"class":305},[292,930,476],{"class":466},[292,932,933],{"class":309},"Disk space running low",[292,935,482],{"class":466},[292,937,938],{"class":294,"line":342},[292,939,829],{"class":768},[218,941,943],{"id":942},"log-aggregation","Log Aggregation",[277,945,947],{"id":946},"view-application-logs","View Application Logs",[282,949,951],{"className":284,"code":950,"language":286,"meta":287,"style":287},"# Docker logs\nskyport docker logs container-name -f\n\n# PM2 logs\nskyport pm2 logs app-name -f\n\n# System logs\nskyport logs system -f\n\n# Search logs\nskyport logs -k \"error\" app-name\n",[289,952,953,958,970,974,979,992,996,1001,1012,1016,1021],{"__ignoreMap":287},[292,954,955],{"class":294,"line":295},[292,956,957],{"class":298},"# Docker logs\n",[292,959,960,962,964,966,968],{"class":294,"line":302},[292,961,306],{"class":305},[292,963,418],{"class":309},[292,965,545],{"class":309},[292,967,463],{"class":309},[292,969,551],{"class":309},[292,971,972],{"class":294,"line":313},[292,973,317],{"emptyLinePlaceholder":316},[292,975,976],{"class":294,"line":320},[292,977,978],{"class":298},"# PM2 logs\n",[292,980,981,983,985,987,990],{"class":294,"line":326},[292,982,306],{"class":305},[292,984,503],{"class":309},[292,986,545],{"class":309},[292,988,989],{"class":309}," app-name",[292,991,551],{"class":309},[292,993,994],{"class":294,"line":337},[292,995,317],{"emptyLinePlaceholder":316},[292,997,998],{"class":294,"line":342},[292,999,1000],{"class":298},"# System logs\n",[292,1002,1003,1005,1007,1010],{"class":294,"line":348},[292,1004,306],{"class":305},[292,1006,545],{"class":309},[292,1008,1009],{"class":309}," system",[292,1011,551],{"class":309},[292,1013,1014],{"class":294,"line":358},[292,1015,317],{"emptyLinePlaceholder":316},[292,1017,1018],{"class":294,"line":363},[292,1019,1020],{"class":298},"# Search logs\n",[292,1022,1023,1025,1027,1030,1032,1035,1038],{"class":294,"line":369},[292,1024,306],{"class":305},[292,1026,545],{"class":309},[292,1028,1029],{"class":309}," -k",[292,1031,476],{"class":466},[292,1033,1034],{"class":309},"error",[292,1036,1037],{"class":466},"\"",[292,1039,1040],{"class":309}," app-name\n",[277,1042,1044],{"id":1043},"log-retention","Log Retention",[214,1046,1047],{},"Configure log retention:",[282,1049,1051],{"className":284,"code":1050,"language":286,"meta":287,"style":287},"# Docker log driver\ndocker run -d \\\n  --log-driver json-file \\\n  --log-opt max-size=10m \\\n  --log-opt max-file=3 \\\n  my-app:latest\n",[289,1052,1053,1058,1069,1079,1089,1101],{"__ignoreMap":287},[292,1054,1055],{"class":294,"line":295},[292,1056,1057],{"class":298},"# Docker log driver\n",[292,1059,1060,1063,1065,1067],{"class":294,"line":302},[292,1061,1062],{"class":305},"docker",[292,1064,630],{"class":309},[292,1066,633],{"class":309},[292,1068,637],{"class":636},[292,1070,1071,1074,1077],{"class":294,"line":313},[292,1072,1073],{"class":309},"  --log-driver",[292,1075,1076],{"class":309}," json-file",[292,1078,637],{"class":636},[292,1080,1081,1084,1087],{"class":294,"line":320},[292,1082,1083],{"class":309},"  --log-opt",[292,1085,1086],{"class":309}," max-size=10m",[292,1088,637],{"class":636},[292,1090,1091,1093,1096,1099],{"class":294,"line":326},[292,1092,1083],{"class":309},[292,1094,1095],{"class":309}," max-file=",[292,1097,1098],{"class":609},"3",[292,1100,637],{"class":636},[292,1102,1103],{"class":294,"line":337},[292,1104,660],{"class":309},[218,1106,1108],{"id":1107},"prometheus-integration-enterprise","Prometheus Integration (Enterprise)",[214,1110,1111],{},"For advanced monitoring, use Prometheus:",[282,1113,1117],{"className":1114,"code":1115,"language":1116,"meta":287,"style":287},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# prometheus.yml\nglobal:\n  scrape_interval: 15s\n\nscrape_configs:\n  - job_name: 'skyport'\n    static_configs:\n      - targets: ['localhost:8080']\n    metrics_path: '\u002Fmetrics'\n","yaml",[289,1118,1119,1124,1133,1144,1148,1155,1172,1179,1201],{"__ignoreMap":287},[292,1120,1121],{"class":294,"line":295},[292,1122,1123],{"class":298},"# prometheus.yml\n",[292,1125,1126,1130],{"class":294,"line":302},[292,1127,1129],{"class":1128},"swJcz","global",[292,1131,1132],{"class":466},":\n",[292,1134,1135,1138,1141],{"class":294,"line":313},[292,1136,1137],{"class":1128},"  scrape_interval",[292,1139,1140],{"class":466},":",[292,1142,1143],{"class":309}," 15s\n",[292,1145,1146],{"class":294,"line":320},[292,1147,317],{"emptyLinePlaceholder":316},[292,1149,1150,1153],{"class":294,"line":326},[292,1151,1152],{"class":1128},"scrape_configs",[292,1154,1132],{"class":466},[292,1156,1157,1160,1163,1165,1167,1169],{"class":294,"line":337},[292,1158,1159],{"class":466},"  -",[292,1161,1162],{"class":1128}," job_name",[292,1164,1140],{"class":466},[292,1166,791],{"class":466},[292,1168,306],{"class":309},[292,1170,1171],{"class":466},"'\n",[292,1173,1174,1177],{"class":294,"line":342},[292,1175,1176],{"class":1128},"    static_configs",[292,1178,1132],{"class":466},[292,1180,1181,1184,1187,1189,1191,1193,1196,1198],{"class":294,"line":348},[292,1182,1183],{"class":466},"      -",[292,1185,1186],{"class":1128}," targets",[292,1188,1140],{"class":466},[292,1190,772],{"class":466},[292,1192,797],{"class":466},[292,1194,1195],{"class":309},"localhost:8080",[292,1197,797],{"class":466},[292,1199,1200],{"class":466},"]\n",[292,1202,1203,1206,1208,1210,1213],{"class":294,"line":358},[292,1204,1205],{"class":1128},"    metrics_path",[292,1207,1140],{"class":466},[292,1209,791],{"class":466},[292,1211,1212],{"class":309},"\u002Fmetrics",[292,1214,1171],{"class":466},[218,1216,1218],{"id":1217},"grafana-dashboards","Grafana Dashboards",[214,1220,1221],{},"Create custom dashboards in Grafana:",[1223,1224,1225,1228,1231,1234],"ol",{},[229,1226,1227],{},"Add SkyPort API as data source",[229,1229,1230],{},"Create dashboard panels",[229,1232,1233],{},"Set metric queries",[229,1235,1236],{},"Configure alerts",[218,1238,1240],{"id":1239},"best-practices","Best Practices",[226,1242,1243,1246,1249,1252,1255,1258],{},[229,1244,1245],{},"Monitor key metrics continuously",[229,1247,1248],{},"Set up meaningful alerts",[229,1250,1251],{},"Use log aggregation for troubleshooting",[229,1253,1254],{},"Regular capacity planning reviews",[229,1256,1257],{},"Baseline performance metrics",[229,1259,1260],{},"Test alert notifications",[1262,1263],"hr",{},[214,1265,1266,1269,1270,1273,1274],{},[232,1267,1268],{},"Next",": ",[1271,1272,64],"a",{"href":65}," | ",[1271,1275,154],{"href":155},[1277,1278,1279],"style",{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}",{"title":287,"searchDepth":302,"depth":302,"links":1281},[1282,1283,1288,1292,1297,1301,1302,1303],{"id":220,"depth":302,"text":221},{"id":274,"depth":302,"text":275,"children":1284},[1285,1286,1287],{"id":279,"depth":313,"text":280},{"id":400,"depth":313,"text":401},{"id":485,"depth":313,"text":486},{"id":554,"depth":302,"text":555,"children":1289},[1290,1291],{"id":558,"depth":313,"text":559},{"id":663,"depth":313,"text":664},{"id":724,"depth":302,"text":725,"children":1293},[1294,1295,1296],{"id":728,"depth":313,"text":729},{"id":832,"depth":313,"text":833},{"id":857,"depth":313,"text":858},{"id":942,"depth":302,"text":943,"children":1298},[1299,1300],{"id":946,"depth":313,"text":947},{"id":1043,"depth":313,"text":1044},{"id":1107,"depth":302,"text":1108},{"id":1217,"depth":302,"text":1218},{"id":1239,"depth":302,"text":1240},"Real-time monitoring and metrics for SkyPort applications","md",null,{},{"title":52,"description":1304},"m1j92aF-Op6uQkg1Xa5ONdVNjvdq-kYPt1R2FHUO9Ww",[1311,1313],{"title":48,"path":49,"stem":50,"description":1312,"children":-1},"SkyPort Marketplace - Instant app installation",{"title":56,"path":57,"stem":58,"description":1314,"children":-1},"Manage your deployed projects in SkyPort",1778858460542]