[{"data":1,"prerenderedAt":1177},["ShallowReactive",2],{"search-posts-dataset":3,"post-detail-/posts/monitoring-server-basics":159,"all-published-articles-list":1116,"series-posts-/posts/monitoring-server-basics":1176},[4,20,35,48,62,75,87,99,111,122,135,149],{"path":5,"title":6,"description":7,"categories":8,"tags":11,"date":16,"image":17},"/posts/incident-checklist","Checklist xử lí sự cố máy chủ Linux: Phục hồi sau thảm họa","Qui trình phản ứng và xử lí sự cố máy chủ Linux khi hệ thống bị sập, tràn RAM/HDD hoặc nghi ngờ bị xâm nhập: Các bước chuẩn đoán, cô lập, phân tích log và khôi phục.",[9,10],"linux","devops",[12,13,14,15],"incident","troubleshooting","security","sysadmin","2026-08-15T00:00:00.000Z",{"src":18,"alt":19},"/img/incident-response.webp","Xử lí sự cố máy chủ Linux",{"path":21,"title":22,"description":23,"categories":24,"tags":27,"date":31,"image":32},"/posts/backup-postgres-docker","Sao lưu tự động PostgreSQL trong Docker với cron job và gzip","Hướng dẫn xây dựng script tự động backup database PostgreSQL chạy trong Docker container: gzip, cron hàng ngày, tự động xóa bản sao lưu cũ và kiểm thử phục hồi.",[25,26],"docker","database",[28,29,30,10],"postgresql","backup","automation","2025-10-20T00:00:00.000Z",{"src":33,"alt":34},"/img/postgres-backup.webp","Sao lưu tự động PostgreSQL Docker",{"path":36,"title":37,"description":38,"categories":39,"tags":40,"date":44,"image":45},"/posts/docker-compose-production","Thiết kế Docker compose chuẩn Production","Hướng dẫn thực chiến xây dựng docker-compose.yml hoàn chỉnh cho Production: healthchecks, restart policies, resource limits, quản lí .env và Persistent Volumes",[25,10],[41,42,43],"production","compose","backend","2025-10-15T00:00:00.000Z",{"src":46,"alt":47},"/img/docker-compose.webp","Docker Compose Production Best Practices",{"path":49,"title":50,"description":51,"categories":52,"tags":53,"date":58,"image":59},"/posts/monitoring-server-basics","Giám sát server Linux từ cơ bản đến nâng cao: htop, ncdu, prometheus và Uptime Kuma","Cẩm nang toàn diện về giám sát hiệu năng máy chủ Linux: Khai thác công cụ CLI thời gian thực (Htop, Btop, Ncdu), thiết lập hệ thống cảnh báo sự cố Uptime Kuma qua Telegram và thu thập chỉ số với Prometheus & Grafana.",[9,10],[54,55,56,57],"monitoring","grafana","prometheus","uptime","2024-10-18T00:00:00.000Z",{"src":60,"alt":61},"/img/monitoring.webp","Giám sát máy chủ Linux",{"path":63,"title":64,"description":65,"categories":66,"tags":68,"date":71,"image":72},"/posts/nginx-reverse-proxy","Hướng dẫn cấu hình Nginx Reverse Proxy với SSL Certbot và Docker chuẩn Production","Cẩm nang toàn diện cấu hình Nginx Reverse Proxy trên Ubuntu: Tích hợp chứng chỉ SSL Let's Encrypt miễn phí qua Certbot, hỗ trợ WebSockets, HTTP/2, nén Brotli/Gzip và Rate Limiting chống DDoS.",[9,67],"nginx",[10,69,70],"ssl","webserver","2024-10-10T00:00:00.000Z",{"src":73,"alt":74},"/img/nginx.webp","Nginx Reverse Proxy với SSL",{"path":76,"title":77,"description":78,"categories":79,"tags":80,"date":83,"image":84},"/posts/how-to-secure-a-vps","Bảo mật máy chủ Linux VPS: Cẩm nang toàn diện 8 bước chống tấn công","Hướng dẫn thực chiến từng bước thiết lập bảo mật máy chủ Linux VPS mới: Vô hiệu hóa mật khẩu SSH, thiết lập SSH Key Ed25519, cấu hình Fail2ban, tường lửa UFW và cập nhật tự động Unattended-Upgrades.",[9,14],[81,82,10],"vps","hardening","2024-10-05T00:00:00.000Z",{"src":85,"alt":86},"/img/linux-security.webp","Bảo mật máy chủ Linux VPS",{"path":88,"title":89,"description":90,"categories":91,"tags":92,"date":95,"image":96},"/posts/systemd-node-service","Quản lí ứng dụng Node.js trong Production với Systemd Service và Journalctl","Hướng dẫn triển khai ứng dụng Node.js, Go hoặc Python dưới dạng Systemd Service trên Linux: Tự động khởi động lại khi crash, quản lý biến môi trường, giới hạn bộ nhớ RAM và theo dõi log thời gian thực với Journalctl.",[9,10],[93,94,43,41],"systemd","nodejs","2024-10-01T00:00:00.000Z",{"src":97,"alt":98},"/img/systemd.webp","Quản lý ứng dụng với Systemd Service",{"path":100,"title":101,"description":102,"categories":103,"tags":104,"date":107,"image":108},"/posts/how-to-install-docker-on-ubuntu-server","Hướng dẫn cài đặt Docker & Docker compose trên Ubuntu server","Hướng dẫn toàn diện cách cài đặt Docker Engine và Docker Compose V2 trên Ubuntu Server, cấu hình bảo mật non-root user, tối ưu daemon và xử lí xung đột tường lửa UFW",[9,25],[105,10,106],"beginner","ubuntu","2024-09-30T00:00:00.000Z",{"src":109,"alt":110},"/img/docker.webp","Cài đặt Docker trên Ubuntu Server",{"path":112,"title":113,"description":114,"categories":115,"tags":116,"date":118,"image":119},"/posts/ssh-key-authentication","Xác thực SSH Key từ cơ bản đến nâng cao: Ed25519, SSH Config và Bảo mật đa tầng","Cẩm nang toàn diện về xác thực SSH Key trên máy chủ Linux: So sánh Ed25519 vs RSA, cấu hình SSH Config quản lí hàng chục VPS, chuyển tiếp Agent Forwarding, và các qui tắc bảo mật chống lộ khóa.",[9,14],[117,10,15],"ssh","2024-09-25T00:00:00.000Z",{"src":120,"alt":121},"/img/ssh-keys.webp","Xác thực SSH Key Linux",{"path":123,"title":124,"description":125,"categories":126,"tags":127,"date":131,"image":132},"/posts/ufw-firewall-basics","Làm chủ tường lửa UFW trên Linux: Qui tắc, giới hạn kết nối và xử lí xung đột Docker","Hướng dẫn toàn diện làm chủ tường lửa UFW (Uncomplicated Firewall) trên Ubuntu: Thiết lập chính sách mặc định, mở cổng theo IP, giới hạn brute-force (Rate Limiting) và khắc phục lỗi Docker bypass tường lửa.",[9,14],[128,129,130,15],"ufw","firewall","networking","2024-09-20T00:00:00.000Z",{"src":133,"alt":134},"/img/ufw-firewall.webp","Cấu hình Tường lửa UFW Linux",{"path":136,"title":137,"description":138,"categories":139,"tags":141,"date":145,"image":146},"/posts/git-deploy-key","Tự động hóa triển khai với Git deploy keys: Thiết lập an toàn cho GitHub và GitLab","Hướng dẫn thiết lập Git Deploy Key chuẩn bảo mật để kéo mã nguồn tự động từ GitHub hoặc GitLab về máy chủ Production: Phân quyền Read-Only, cấu hình SSH Config và tích hợp Webhook tự động cập nhật.",[140,10],"git",[142,143,144,30],"github","gitlab","cicd","2024-09-18T00:00:00.000Z",{"src":147,"alt":148},"/img/git-deploy.webp","Git Deploy Keys cho máy chủ",{"path":150,"title":151,"description":152,"categories":153,"tags":154,"date":155,"image":156},"/posts/ubuntu-server-initial-setup","Qui trình thiết lập ban đầu cho Ubuntu Server: Swap, Timezone, User và Firewall","Hướng dẫn các bước thiết lập chuẩn mực ban đầu cho máy chủ Ubuntu Server mới: Cấu hình múi giờ Việt Nam (Asia/Ho_Chi_Minh), tạo phân vùng RAM ảo (Swap File), phân quyền Sudoer và kích hoạt tường lửa UFW.",[9],[106,105,15],"2024-09-15T00:00:00.000Z",{"src":157,"alt":158},"/img/ubuntu.webp","Thiết lập ban đầu Ubuntu Server",{"id":160,"title":50,"author":161,"body":162,"categories":1104,"date":58,"description":51,"draft":1105,"extension":1106,"image":1107,"meta":1108,"navigation":284,"path":49,"seo":1109,"series":1110,"series_order":1110,"slug":1111,"stem":1112,"tags":1113,"updated":1114,"__hash__":1115},"post/posts/monitoring-server-basics.md","Dương Thụ",{"type":163,"value":164,"toc":1084},"minimal",[165,170,174,203,206,209,213,216,230,240,298,305,328,364,372,379,424,431,439,442,470,477,479,483,489,496,500,561,568,601,604,606,610,617,637,641,712,718,720,724,730,736,952,958,969,971,975,1064,1066,1070,1080],[166,167,169],"h2",{"id":168},"tầm-quan-trọng-của-giám-sát-hệ-thống-server-observability","Tầm quan trọng của giám sát hệ thống (Server Observability)",[171,172,173],"p",{},"Một hệ thống máy chủ chỉ thực sự được coi là ổn định khi bạn luôn nắm bắt được:",[175,176,177,185,191,197],"ul",{},[178,179,180,184],"li",{},[181,182,183],"strong",{},"Tải CPU (CPU Load)",": Có tiến trình nào đang chiếm dụng 100% CPU do vòng lặp vô tận không?",[178,186,187,190],{},[181,188,189],{},"Dung lượng RAM & Swap",": Ứng dụng có bị rò rỉ bộ nhớ (Memory Leak) sắp dẫn đến tình trạng máy chủ bị đơ không?",[178,192,193,196],{},[181,194,195],{},"Dung lượng Ổ cứng (Disk I/O & Disk Space)",": Các file log hoặc cơ sở dữ liệu có đang làm đầy phân vùng root không?",[178,198,199,202],{},[181,200,201],{},"Tình trạng Dịch vụ (Uptime/Downtime)",": Website có đang phản hồi khách hàng bình thường hay đang bị sập?",[171,204,205],{},"Trong bài viết này, chúng tôi sẽ hướng dẫn bạn xây dựng hệ thống giám sát đa tầng: từ các công cụ dòng lệnh (CLI) tức thì cho đến hệ thống cảnh báo sự cố tự động gửi tin nhắn về điện thoại qua Telegram..",[207,208],"hr",{},[166,210,212],{"id":211},"_1-tầng-1-các-công-cụ-giám-sát-dòng-lệnh-cli-tools","1. Tầng 1: Các công cụ giám sát dòng lệnh (CLI Tools)",[171,214,215],{},"Khi truy cập vào máy chủ qua SSH, đây là những công cụ đầu tiên bạn nên sử dụng để chuẩn đoán tình trạng sức khỏe:",[217,218,220,221,225,226,229],"h3",{"id":219},"a-htop-btop-giám-sát-cpu-ram-và-tiến-trình","A. ",[222,223,224],"code",{},"Htop"," & ",[222,227,228],{},"Btop"," - Giám sát CPU, RAM và Tiến trình",[171,231,232,235,236,239],{},[222,233,234],{},"htop"," là phiên bản nâng cấp đồ họa tương tác của lệnh ",[222,237,238],{},"top"," cổ điển:",[241,242,247],"pre",{"className":243,"code":244,"language":245,"meta":246,"style":246},"language-bash shiki shiki-themes github-dark github-dark github-dark","# Cài đặt htop\nsudo apt install -y htop\n\n# Chạy htop\nhtop\n","bash","",[222,248,249,258,279,286,292],{"__ignoreMap":246},[250,251,254],"span",{"class":252,"line":253},"line",1,[250,255,257],{"class":256},"sGGCZ","# Cài đặt htop\n",[250,259,261,265,269,272,276],{"class":252,"line":260},2,[250,262,264],{"class":263},"sb7EE","sudo",[250,266,268],{"class":267},"skqr8"," apt",[250,270,271],{"class":267}," install",[250,273,275],{"class":274},"sKJT9"," -y",[250,277,278],{"class":267}," htop\n",[250,280,282],{"class":252,"line":281},3,[250,283,285],{"emptyLinePlaceholder":284},true,"\n",[250,287,289],{"class":252,"line":288},4,[250,290,291],{"class":256},"# Chạy htop\n",[250,293,295],{"class":252,"line":294},5,[250,296,297],{"class":263},"htop\n",[171,299,300,301,304],{},"Nếu muốn giao diện hiện đại hơn với biểu đồ đồ họa sắc nét, hãy dùng ",[222,302,303],{},"btop",":",[241,306,308],{"className":243,"code":307,"language":245,"meta":246,"style":246},"sudo apt install -y btop\nbtop\n",[222,309,310,323],{"__ignoreMap":246},[250,311,312,314,316,318,320],{"class":252,"line":253},[250,313,264],{"class":263},[250,315,268],{"class":267},[250,317,271],{"class":267},[250,319,275],{"class":274},[250,321,322],{"class":267}," btop\n",[250,324,325],{"class":252,"line":260},[250,326,327],{"class":263},"btop\n",[175,329,330],{},[178,331,332,335,336],{},[181,333,334],{},"Phím tắt hữu ích trong htop",":\n",[175,337,338,344,358],{},[178,339,340,343],{},[222,341,342],{},"F6",": Sắp xếp tiến trình theo CPU% hoặc Memory%.",[178,345,346,349,350,353,354,357],{},[222,347,348],{},"F9",": Gửi tín hiệu Kill (",[222,351,352],{},"SIGTERM"," hoặc ",[222,355,356],{},"SIGKILL",") để tắt một tiến trình bị treo.",[178,359,360,363],{},[222,361,362],{},"F3",": Tìm kiếm tiến trình theo tên.",[217,365,367,368,371],{"id":366},"b-ncdu-tìm-kiếm-và-dọn-dẹp-file-dung-lượng-khủng-làm-đầy-ổ-đĩa","B. ",[222,369,370],{},"Ncdu"," - Tìm kiếm và dọn dẹp file dung lượng khủng làm đầy ổ đĩa",[171,373,374,375,378],{},"Khi ổ cứng VPS đạt mức cảnh báo 90-100%, ",[222,376,377],{},"ncdu"," (NCurses Disk Usage) là công cụ nhanh nhất giúp bạn quét toàn bộ hệ thống và phân tích cây thư mục xem thư mục nào đang chiếm nhiều GB nhất:",[241,380,382],{"className":243,"code":381,"language":245,"meta":246,"style":246},"# Cài đặt ncdu\nsudo apt install -y ncdu\n\n# Quét phân vùng root (bỏ qua các ổ đĩa mạng ảo)\nsudo ncdu -x /\n",[222,383,384,389,402,406,411],{"__ignoreMap":246},[250,385,386],{"class":252,"line":253},[250,387,388],{"class":256},"# Cài đặt ncdu\n",[250,390,391,393,395,397,399],{"class":252,"line":260},[250,392,264],{"class":263},[250,394,268],{"class":267},[250,396,271],{"class":267},[250,398,275],{"class":274},[250,400,401],{"class":267}," ncdu\n",[250,403,404],{"class":252,"line":281},[250,405,285],{"emptyLinePlaceholder":284},[250,407,408],{"class":252,"line":288},[250,409,410],{"class":256},"# Quét phân vùng root (bỏ qua các ổ đĩa mạng ảo)\n",[250,412,413,415,418,421],{"class":252,"line":294},[250,414,264],{"class":263},[250,416,417],{"class":267}," ncdu",[250,419,420],{"class":274}," -x",[250,422,423],{"class":267}," /\n",[171,425,426,427,430],{},"Sử dụng các phím mũi tên lên/xuống/vào/ra để điều hướng và phím ",[222,428,429],{},"d"," để xóa trực tiếp file rác.",[217,432,434,435,438],{"id":433},"c-iotop-kiểm-tra-tốc-độ-đọcghi-ổ-đĩa-disk-io-bottleneck","C. ",[222,436,437],{},"Iotop"," - Kiểm tra tốc độ đọc/ghi ổ đĩa (Disk I/O Bottleneck)",[171,440,441],{},"Khi máy chủ phản hồi chậm dù CPU và RAM vẫn còn trống, nguyên nhân thường do ổ đĩa bị nghẽn I/O (Disk I/O Wait):",[241,443,445],{"className":243,"code":444,"language":245,"meta":246,"style":246},"sudo apt install -y iotop\nsudo iotop -o\n",[222,446,447,460],{"__ignoreMap":246},[250,448,449,451,453,455,457],{"class":252,"line":253},[250,450,264],{"class":263},[250,452,268],{"class":267},[250,454,271],{"class":267},[250,456,275],{"class":274},[250,458,459],{"class":267}," iotop\n",[250,461,462,464,467],{"class":252,"line":260},[250,463,264],{"class":263},[250,465,466],{"class":267}," iotop",[250,468,469],{"class":274}," -o\n",[171,471,472,473,476],{},"Cờ ",[222,474,475],{},"-o"," chỉ hiển thị các tiến trình đang thực sự phát sinh thao tác đọc/ghi đĩa.",[207,478],{},[166,480,482],{"id":481},"_2-tầng-2-cảnh-báo-sự-cố-thời-gian-thực-với-uptime-kuma","2. Tầng 2: Cảnh báo Sự cố Thời gian thực với Uptime Kuma",[171,484,485,488],{},[181,486,487],{},"Uptime Kuma"," là công cụ mã nguồn mở tự host (Self-hosted Monitoring) tuyệt đẹp, có tính năng tương tự như Pingdom hay UptimeRobot nhưng hoàn toàn miễn phí và riêng tư.",[171,490,491,492,495],{},"Nó có thể kiểm tra định kỳ HTTP(s), Ping, DNS, Docker container và gửi thông báo tức thời qua ",[181,493,494],{},"Telegram, Discord, Slack, Email, Webhook"," ngay khi website của bạn bị gián đoạn (Downtime).",[217,497,499],{"id":498},"triển-khai-uptime-kuma-siêu-nhanh-với-docker","Triển khai Uptime Kuma siêu nhanh với Docker:",[241,501,503],{"className":243,"code":502,"language":245,"meta":246,"style":246},"docker run -d \\\n  --restart=always \\\n  -p 127.0.0.1:3001:3001 \\\n  -v uptime-kuma:/app/data \\\n  --name uptime-kuma \\\n  louislam/uptime-kuma:1\n",[222,504,505,518,525,535,545,555],{"__ignoreMap":246},[250,506,507,509,512,515],{"class":252,"line":253},[250,508,25],{"class":263},[250,510,511],{"class":267}," run",[250,513,514],{"class":274}," -d",[250,516,517],{"class":274}," \\\n",[250,519,520,523],{"class":252,"line":260},[250,521,522],{"class":274},"  --restart=always",[250,524,517],{"class":274},[250,526,527,530,533],{"class":252,"line":281},[250,528,529],{"class":274},"  -p",[250,531,532],{"class":267}," 127.0.0.1:3001:3001",[250,534,517],{"class":274},[250,536,537,540,543],{"class":252,"line":288},[250,538,539],{"class":274},"  -v",[250,541,542],{"class":267}," uptime-kuma:/app/data",[250,544,517],{"class":274},[250,546,547,550,553],{"class":252,"line":294},[250,548,549],{"class":274},"  --name",[250,551,552],{"class":267}," uptime-kuma",[250,554,517],{"class":274},[250,556,558],{"class":252,"line":557},6,[250,559,560],{"class":267},"  louislam/uptime-kuma:1\n",[171,562,563,564,567],{},"Sau khi chạy container, bạn có thể dùng Nginx Reverse Proxy trỏ domain ",[222,565,566],{},"status.example.com"," vào cổng 3001 và thiết lập:",[569,570,571,582,588,594],"ol",{},[178,572,573,574,577,578,581],{},"Tạo một con Bot Telegram qua ",[222,575,576],{},"@BotFather"," và lấy ",[222,579,580],{},"Bot Token",".",[178,583,584,585,581],{},"Tạo một Group Telegram và lấy ",[222,586,587],{},"Chat ID",[178,589,590,591,581],{},"Trong Uptime Kuma: Vào ",[181,592,593],{},"Settings > Notification > Setup Telegram",[178,595,596,597,600],{},"Thêm các mục kiểm tra (Monitors): ",[222,598,599],{},"https://my-website.com"," (Kiểm tra mỗi 60 giây).",[171,602,603],{},"Mỗi khi website bị sập hoặc gặp lỗi HTTP 500/502, Telegram trên điện thoại của bạn sẽ lập tức nhận được tin nhắn cảnh báo trong vòng 1 phút!",[207,605],{},[166,607,609],{"id":608},"_3-tầng-3-giám-sát-hạ-tầng-nâng-cao-với-prometheus-grafana","3. Tầng 3: Giám sát Hạ tầng Nâng cao với Prometheus & Grafana",[171,611,612,613,616],{},"Đối với các hệ thống lớn có nhiều máy chủ, bộ đôi ",[181,614,615],{},"Prometheus + Node Exporter + Grafana"," là tiêu chuẩn công nghiệp (Industry Standard):",[569,618,619,625,631],{},[178,620,621,624],{},[181,622,623],{},"Node Exporter",": Chạy trên từng máy chủ VPS để thu thập số liệu phần cứng (CPU, Memory, Network, Disk).",[178,626,627,630],{},[181,628,629],{},"Prometheus",": Máy chủ thu thập (Scraper) định kỳ kéo số liệu từ Node Exporter và lưu trữ dưới dạng chuỗi thời gian (Time-series Database).",[178,632,633,636],{},[181,634,635],{},"Grafana",": Bảng điều khiển (Dashboard) trực quan hóa các biểu đồ số liệu thời gian thực tuyệt đẹp.",[217,638,640],{"id":639},"triển-khai-node-exporter-trên-máy-chủ","Triển khai Node Exporter trên máy chủ:",[241,642,644],{"className":243,"code":643,"language":245,"meta":246,"style":246},"docker run -d \\\n  --name=node-exporter \\\n  --restart=unless-stopped \\\n  --net=\"host\" \\\n  --pid=\"host\" \\\n  -v \"/:/host:ro,rslave\" \\\n  quay.io/prometheus/node-exporter:latest \\\n  --path.rootfs=/host\n",[222,645,646,656,663,670,680,689,698,706],{"__ignoreMap":246},[250,647,648,650,652,654],{"class":252,"line":253},[250,649,25],{"class":263},[250,651,511],{"class":267},[250,653,514],{"class":274},[250,655,517],{"class":274},[250,657,658,661],{"class":252,"line":260},[250,659,660],{"class":274},"  --name=node-exporter",[250,662,517],{"class":274},[250,664,665,668],{"class":252,"line":281},[250,666,667],{"class":274},"  --restart=unless-stopped",[250,669,517],{"class":274},[250,671,672,675,678],{"class":252,"line":288},[250,673,674],{"class":274},"  --net=",[250,676,677],{"class":267},"\"host\"",[250,679,517],{"class":274},[250,681,682,685,687],{"class":252,"line":294},[250,683,684],{"class":274},"  --pid=",[250,686,677],{"class":267},[250,688,517],{"class":274},[250,690,691,693,696],{"class":252,"line":557},[250,692,539],{"class":274},[250,694,695],{"class":267}," \"/:/host:ro,rslave\"",[250,697,517],{"class":274},[250,699,701,704],{"class":252,"line":700},7,[250,702,703],{"class":267},"  quay.io/prometheus/node-exporter:latest",[250,705,517],{"class":274},[250,707,709],{"class":252,"line":708},8,[250,710,711],{"class":274},"  --path.rootfs=/host\n",[171,713,714,715,581],{},"Node Exporter sẽ phát các chỉ số phần cứng qua endpoint ",[222,716,717],{},"http://\u003CIP_MÁY_CHỦ>:9100/metrics",[207,719],{},[166,721,723],{"id":722},"_4-script-tự-động-cảnh-báo-dung-lượng-ổ-đĩa-qua-telegram","4. Script tự động cảnh báo Dung lượng ổ đĩa qua Telegram",[171,725,726,727,304],{},"Nếu bạn không muốn cài đặt các phần mềm phức tạp mà chỉ cần một cảnh báo đơn giản khi dung lượng ổ cứng vượt quá ",[181,728,729],{},"85%",[171,731,732,733,304],{},"Tạo script ",[222,734,735],{},"/opt/scripts/check_disk.sh",[241,737,739],{"className":243,"code":738,"language":245,"meta":246,"style":246},"#!/bin/bash\n# Ngưỡng cảnh báo (%)\nTHRESHOLD=85\nBOT_TOKEN=\"YOUR_TELEGRAM_BOT_TOKEN\"\nCHAT_ID=\"YOUR_TELEGRAM_CHAT_ID\"\n\nCURRENT_USAGE=$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//')\n\nif [ \"$CURRENT_USAGE\" -gt \"$THRESHOLD\" ]; then\n    MESSAGE=\"⚠️ [CẢNH BÁO MÁY CHỦ] Dung lượng ổ cứng root đã đạt ${CURRENT_USAGE}% (Vượt ngưỡng ${THRESHOLD}%)! Hãy kiểm tra và dọn dẹp ngay.\"\n    curl -s -X POST \"https://api.telegram.org/bot${BOT_TOKEN}/sendMessage\" \\\n        -d \"chat_id=${CHAT_ID}\" \\\n        -d \"text=${MESSAGE}\" > /dev/null\nfi\n",[222,740,741,746,751,764,774,784,788,827,831,865,886,911,927,946],{"__ignoreMap":246},[250,742,743],{"class":252,"line":253},[250,744,745],{"class":256},"#!/bin/bash\n",[250,747,748],{"class":252,"line":260},[250,749,750],{"class":256},"# Ngưỡng cảnh báo (%)\n",[250,752,753,757,761],{"class":252,"line":281},[250,754,756],{"class":755},"sFJ4l","THRESHOLD",[250,758,760],{"class":759},"sWuGj","=",[250,762,763],{"class":267},"85\n",[250,765,766,769,771],{"class":252,"line":288},[250,767,768],{"class":755},"BOT_TOKEN",[250,770,760],{"class":759},[250,772,773],{"class":267},"\"YOUR_TELEGRAM_BOT_TOKEN\"\n",[250,775,776,779,781],{"class":252,"line":294},[250,777,778],{"class":755},"CHAT_ID",[250,780,760],{"class":759},[250,782,783],{"class":267},"\"YOUR_TELEGRAM_CHAT_ID\"\n",[250,785,786],{"class":252,"line":557},[250,787,285],{"emptyLinePlaceholder":284},[250,789,790,793,795,798,801,804,807,810,813,816,818,821,824],{"class":252,"line":700},[250,791,792],{"class":755},"CURRENT_USAGE",[250,794,760],{"class":759},[250,796,797],{"class":755},"$(",[250,799,800],{"class":263},"df",[250,802,803],{"class":274}," -h",[250,805,806],{"class":267}," /",[250,808,809],{"class":759}," |",[250,811,812],{"class":263}," awk",[250,814,815],{"class":267}," 'NR==2 {print $5}'",[250,817,809],{"class":759},[250,819,820],{"class":263}," sed",[250,822,823],{"class":267}," 's/%//'",[250,825,826],{"class":755},")\n",[250,828,829],{"class":252,"line":708},[250,830,285],{"emptyLinePlaceholder":284},[250,832,834,837,840,843,846,848,851,854,857,859,862],{"class":252,"line":833},9,[250,835,836],{"class":759},"if",[250,838,839],{"class":755}," [ ",[250,841,842],{"class":267},"\"",[250,844,845],{"class":755},"$CURRENT_USAGE",[250,847,842],{"class":267},[250,849,850],{"class":759}," -gt",[250,852,853],{"class":267}," \"",[250,855,856],{"class":755},"$THRESHOLD",[250,858,842],{"class":267},[250,860,861],{"class":755}," ]; ",[250,863,864],{"class":759},"then\n",[250,866,868,871,873,876,878,881,883],{"class":252,"line":867},10,[250,869,870],{"class":755},"    MESSAGE",[250,872,760],{"class":759},[250,874,875],{"class":267},"\"⚠️ [CẢNH BÁO MÁY CHỦ] Dung lượng ổ cứng root đã đạt ${",[250,877,792],{"class":755},[250,879,880],{"class":267},"}% (Vượt ngưỡng ${",[250,882,756],{"class":755},[250,884,885],{"class":267},"}%)! Hãy kiểm tra và dọn dẹp ngay.\"\n",[250,887,889,892,895,898,901,904,906,909],{"class":252,"line":888},11,[250,890,891],{"class":263},"    curl",[250,893,894],{"class":274}," -s",[250,896,897],{"class":274}," -X",[250,899,900],{"class":267}," POST",[250,902,903],{"class":267}," \"https://api.telegram.org/bot${",[250,905,768],{"class":755},[250,907,908],{"class":267},"}/sendMessage\"",[250,910,517],{"class":274},[250,912,914,917,920,922,925],{"class":252,"line":913},12,[250,915,916],{"class":274},"        -d",[250,918,919],{"class":267}," \"chat_id=${",[250,921,778],{"class":755},[250,923,924],{"class":267},"}\"",[250,926,517],{"class":274},[250,928,930,932,935,938,940,943],{"class":252,"line":929},13,[250,931,916],{"class":274},[250,933,934],{"class":267}," \"text=${",[250,936,937],{"class":755},"MESSAGE",[250,939,924],{"class":267},[250,941,942],{"class":759}," >",[250,944,945],{"class":267}," /dev/null\n",[250,947,949],{"class":252,"line":948},14,[250,950,951],{"class":759},"fi\n",[171,953,954,955,304],{},"Phân quyền và đặt lịch chạy mỗi 30 phút trong ",[222,956,957],{},"crontab",[241,959,963],{"className":960,"code":961,"language":962,"meta":246,"style":246},"language-cron shiki shiki-themes github-dark github-dark github-dark","*/30 * * * * /opt/scripts/check_disk.sh > /dev/null 2>&1\n","cron",[222,964,965],{"__ignoreMap":246},[250,966,967],{"class":252,"line":253},[250,968,961],{},[207,970],{},[166,972,974],{"id":973},"bảng-so-sánh-các-giải-pháp-giám-sát","Bảng so sánh các giải pháp Giám sát",[976,977,978,998],"table",{},[979,980,981],"thead",{},[982,983,984,989,992,995],"tr",{},[985,986,988],"th",{"align":987},"left","Giải pháp",[985,990,991],{"align":987},"Độ phức tạp",[985,993,994],{"align":987},"Mức tiêu thụ RAM",[985,996,997],{"align":987},"Tính năng chính",[999,1000,1001,1018,1033,1048],"tbody",{},[982,1002,1003,1009,1012,1015],{},[1004,1005,1006],"td",{"align":987},[181,1007,1008],{},"CLI (htop, ncdu, btop)",[1004,1010,1011],{"align":987},"Rất thấp",[1004,1013,1014],{"align":987},"\u003C 10MB",[1004,1016,1017],{"align":987},"Chuẩn đoán tức thời khi đang SSH",[982,1019,1020,1024,1027,1030],{},[1004,1021,1022],{"align":987},[181,1023,487],{},[1004,1025,1026],{"align":987},"Thấp",[1004,1028,1029],{"align":987},"~ 100MB",[1004,1031,1032],{"align":987},"Báo sập web qua Telegram, tính Uptime %",[982,1034,1035,1040,1042,1045],{},[1004,1036,1037],{"align":987},[181,1038,1039],{},"Custom Bash Script",[1004,1041,1011],{"align":987},[1004,1043,1044],{"align":987},"~ 2MB",[1004,1046,1047],{"align":987},"Cảnh báo Disk Full, High CPU tức thời",[982,1049,1050,1055,1058,1061],{},[1004,1051,1052],{"align":987},[181,1053,1054],{},"Prometheus + Grafana",[1004,1056,1057],{"align":987},"Trung bình - Cao",[1004,1059,1060],{"align":987},"~ 500MB - 1GB",[1004,1062,1063],{"align":987},"Biểu đồ chi tiết, phân tích xu hướng dài hạn",[207,1065],{},[166,1067,1069],{"id":1068},"tổng-kết","Tổng kết",[171,1071,1072,1073,1076,1077,1079],{},"Một chiến lược giám sát tốt giúp bạn phát hiện và ngăn chặn thảm họa ",[181,1074,1075],{},"trước khi người dùng kịp phàn nàn",". Hãy bắt đầu ngay hôm nay bằng việc cài đặt ",[222,1078,234],{},", cấu hình Uptime Kuma nhận cảnh báo qua Telegram và đặt script cảnh báo dung lượng đĩa cho máy chủ của bạn!",[1081,1082,1083],"style",{},"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 .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 pre.shiki code .sGGCZ, html code.shiki .sGGCZ{--shiki-default:#6A737D;--shiki-dark:#6A737D;--shiki-light:#6A737D}html pre.shiki code .sb7EE, html code.shiki .sb7EE{--shiki-default:#B392F0;--shiki-dark:#B392F0;--shiki-light:#B392F0}html pre.shiki code .skqr8, html code.shiki .skqr8{--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF;--shiki-light:#9ECBFF}html pre.shiki code .sKJT9, html code.shiki .sKJT9{--shiki-default:#79B8FF;--shiki-dark:#79B8FF;--shiki-light:#79B8FF}html pre.shiki code .sFJ4l, html code.shiki .sFJ4l{--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8;--shiki-light:#E1E4E8}html pre.shiki code .sWuGj, html code.shiki .sWuGj{--shiki-default:#F97583;--shiki-dark:#F97583;--shiki-light:#F97583}",{"title":246,"searchDepth":260,"depth":260,"links":1085},[1086,1087,1095,1098,1101,1102,1103],{"id":168,"depth":260,"text":169},{"id":211,"depth":260,"text":212,"children":1088},[1089,1091,1093],{"id":219,"depth":281,"text":1090},"A. Htop & Btop - Giám sát CPU, RAM và Tiến trình",{"id":366,"depth":281,"text":1092},"B. Ncdu - Tìm kiếm và dọn dẹp file dung lượng khủng làm đầy ổ đĩa",{"id":433,"depth":281,"text":1094},"C. Iotop - Kiểm tra tốc độ đọc/ghi ổ đĩa (Disk I/O Bottleneck)",{"id":481,"depth":260,"text":482,"children":1096},[1097],{"id":498,"depth":281,"text":499},{"id":608,"depth":260,"text":609,"children":1099},[1100],{"id":639,"depth":281,"text":640},{"id":722,"depth":260,"text":723},{"id":973,"depth":260,"text":974},{"id":1068,"depth":260,"text":1069},[9,10],false,"md",{"src":60,"alt":61},{},{"title":50,"description":51},null,"monitoring-server-basics","posts/monitoring-server-basics",[54,55,56,57],"2026-08-26","HQnGVwBOqF",[1117,1122,1127,1132,1136,1141,1146,1151,1156,1161,1166,1171],{"path":5,"title":6,"categories":1118,"tags":1119,"date":16,"draft":1105,"slug":1120,"description":7,"image":1121},[9,10],[12,13,14,15],"incident-checklist",{"src":18,"alt":19},{"path":21,"title":22,"categories":1123,"tags":1124,"date":31,"draft":1105,"slug":1125,"description":23,"image":1126},[25,26],[28,29,30,10],"backup-postgres-docker",{"src":33,"alt":34},{"path":36,"title":37,"categories":1128,"tags":1129,"date":44,"draft":1105,"slug":1130,"description":38,"image":1131},[25,10],[41,42,43],"docker-compose-production",{"src":46,"alt":47},{"path":49,"title":50,"categories":1133,"tags":1134,"date":58,"draft":1105,"slug":1111,"description":51,"image":1135},[9,10],[54,55,56,57],{"src":60,"alt":61},{"path":63,"title":64,"categories":1137,"tags":1138,"date":71,"draft":1105,"slug":1139,"description":65,"image":1140},[9,67],[10,69,70],"nginx-reverse-proxy",{"src":73,"alt":74},{"path":76,"title":77,"categories":1142,"tags":1143,"date":83,"draft":1105,"slug":1144,"description":78,"image":1145},[9,14],[81,82,10],"how-to-secure-a-vps",{"src":85,"alt":86},{"path":88,"title":89,"categories":1147,"tags":1148,"date":95,"draft":1105,"slug":1149,"description":90,"image":1150},[9,10],[93,94,43,41],"systemd-node-service",{"src":97,"alt":98},{"path":100,"title":101,"categories":1152,"tags":1153,"date":107,"draft":1105,"slug":1154,"description":102,"image":1155},[9,25],[105,10,106],"how-to-install-docker-on-ubuntu-server",{"src":109,"alt":110},{"path":112,"title":113,"categories":1157,"tags":1158,"date":118,"draft":1105,"slug":1159,"description":114,"image":1160},[9,14],[117,10,15],"ssh-key-authentication",{"src":120,"alt":121},{"path":123,"title":124,"categories":1162,"tags":1163,"date":131,"draft":1105,"slug":1164,"description":125,"image":1165},[9,14],[128,129,130,15],"ufw-firewall-basics",{"src":133,"alt":134},{"path":136,"title":137,"categories":1167,"tags":1168,"date":145,"draft":1105,"slug":1169,"description":138,"image":1170},[140,10],[142,143,144,30],"git-deploy-key",{"src":147,"alt":148},{"path":150,"title":151,"categories":1172,"tags":1173,"date":155,"draft":1105,"slug":1174,"description":152,"image":1175},[9],[106,105,15],"ubuntu-server-initial-setup",{"src":157,"alt":158},[],1789616168881]