Tối ưu hóa hiệu suất máy chủ với quy trình tự động giám sát CPU, RAM và Disk!

Bạn là quản trị viên hệ thống hay chuyên gia DevOps? Mẫu quy trình n8n này được thiết kế để theo dõi các chỉ số tài nguyên quan trọng trên VPS (Máy Chủ Ảo Riêng). Với kiểm tra tự động mỗi 15 phút và cảnh báo qua email khi tài nguyên vượt ngưỡng 80%, công cụ này giúp duy trì hiệu suất máy chủ ổn định và ngăn chặn downtime do tài nguyên.


Đối Tượng Sử Dụng

  • Quản Trị Viên Hệ Thống: Quản lý máy chủ Linux, muốn đảm bảo hệ thống hoạt động trơn tru mà không cần theo dõi thủ công.
  • Chuyên Gia DevOps: Quản lý nhiều môi trường, cần công cụ tự động cảnh báo vấn đề trước khi ảnh hưởng đến hoạt động.
  • Đội Hỗ Trợ IT: Theo dõi sức khỏe máy chủ trên toàn bộ cơ sở hạ tầng tổ chức một cách dễ dàng.

Cách Hoạt Động

  1. Kích Hoạt Theo Lịch: Node Cron tự động chạy quy trình mỗi 15 phút.
  2. Kiểm Tra Tài Nguyên: Các node SSH Command riêng biệt thực thi lệnh để kiểm tra mức sử dụng RAM, Disk và CPU hiện tại.
  3. Tổng Hợp Dữ Liệu: Node Merge kết hợp kết quả từ các kiểm tra thành một gói dữ liệu duy nhất để phân tích.
  4. Phân Tích Ngưỡng: Node Function đánh giá xem có tài nguyên nào vượt ngưỡng 80% hay không.
  5. Cảnh Báo: Nếu bất kỳ chỉ số nào vượt ngưỡng, email cảnh báo sẽ được gửi qua node Email, giúp quản trị viên phản ứng kịp thời.

Các Bước Cài Đặt

  • Cấu Hình Node SSH: Cập nhật thông tin đăng nhập và chi tiết máy chủ mục tiêu trong từng node SSH để thực hiện kiểm tra tài nguyên.
  • Điều Chỉnh Ngưỡng: Xem xét và tùy chỉnh ngưỡng sử dụng tài nguyên trong node Function nếu cần mức độ nhạy khác.
  • Cấu Hình Email: Nhập địa chỉ email nhận cảnh báo vào node Email. Đảm bảo thông tin xác thực và chi tiết máy chủ gửi email được thiết lập chính xác.

Lợi Ích Của Quy Trình

  • Tự Động Hóa Giám Sát: Loại bỏ nhu cầu kiểm tra thủ công, tiết kiệm thời gian.
  • Phản Ứng Nhanh: Nhận cảnh báo tức thì khi tài nguyên vượt ngưỡng, giảm nguy cơ gián đoạn.
  • Dễ Dàng Triển Khai: Phù hợp cho cả cá nhân và tổ chức quản lý hạ tầng lớn.

Code Json:

{
  "nodes": [
    {
      "parameters": {
        "command": "free | awk '/Mem:/ {printf \"%.2f\", (1 - $7/$2) * 100}'"
      },
      "id": "79afc30f-c3db-4ba1-8f0d-a1000b5e0abe",
      "name": "Check RAM usage",
      "type": "n8n-nodes-base.ssh",
      "position": [
        800,
        400
      ],
      "executeOnce": false,
      "typeVersion": 1,
      "credentials": {
        "sshPassword": {
          "id": "0H56F0ODZAwmvC8R",
          "name": "SSH Password account"
        }
      }
    },
    {
      "parameters": {
        "command": "df -h | awk '$NF==\"/\"{printf \"%.2f\", $5}'"
      },
      "id": "d09aa314-8d60-42a8-9933-d7e8d73e2c7d",
      "name": "Check Disk usage",
      "type": "n8n-nodes-base.ssh",
      "position": [
        1020,
        400
      ],
      "executeOnce": false,
      "typeVersion": 1,
      "credentials": {
        "sshPassword": {
          "id": "0H56F0ODZAwmvC8R",
          "name": "SSH Password account"
        }
      }
    },
    {
      "parameters": {
        "command": "top -bn 1 | grep \"Cpu(s)\" | sed \"s/.*, *\\([0-9.]*\\)%* id.*/\\1/\" | awk '{print 100 - $1}'"
      },
      "id": "bc6a0df2-f4cc-484a-ac39-c92e8795175e",
      "name": "Check CPU usage",
      "type": "n8n-nodes-base.ssh",
      "position": [
        1220,
        400
      ],
      "executeOnce": false,
      "typeVersion": 1,
      "credentials": {
        "sshPassword": {
          "id": "0H56F0ODZAwmvC8R",
          "name": "SSH Password account"
        }
      }
    },
    {
      "parameters": {
        "mode": "combineBySql",
        "numberInputs": 3,
        "query": "SELECT input1.stdout as CPU, input2.stdout as Disk, input3.stdout as RAM FROM input1 LEFT JOIN input2 ON input1.name = input2.id LEFT JOIN input3 ON input1.name = input3.id"
      },
      "id": "de0df734-1e4a-4bf0-9f7d-d60b52e06f48",
      "name": "Merge check results",
      "type": "n8n-nodes-base.merge",
      "position": [
        540,
        740
      ],
      "typeVersion": 3
    },
    {
      "parameters": {
        "conditions": {
          "number": [
            {
              "value1": "={{ $json.CPU }}",
              "operation": "largerEqual",
              "value2": 80
            },
            {
              "value1": "={{ $json.Disk }}",
              "operation": "largerEqual",
              "value2": 80
            },
            {
              "value1": "={{ $json.RAM }}",
              "operation": "largerEqual",
              "value2": 80
            }
          ]
        },
        "combineOperation": "any"
      },
      "id": "7b7d6c0a-3f46-48b3-aa1d-191839540196",
      "name": "Check results against thresholds",
      "type": "n8n-nodes-base.if",
      "position": [
        880,
        740
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "minutes",
              "minutesInterval": 15
            }
          ]
        }
      },
      "id": "0bf83ea8-b1c4-40f7-8a60-39f765e8ec2c",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        600,
        400
      ],
      "typeVersion": 1.2
    },
    {
      "parameters": {
        "sendTo": "1",
        "subject": "1",
        "message": "1",
        "options": {}
      },
      "type": "n8n-nodes-base.gmail",
      "typeVersion": 2.1,
      "position": [
        1200,
        720
      ],
      "id": "b00a7827-d2b6-46a2-97d4-721e81890522",
      "name": "Gmail",
      "webhookId": "c66d19a7-a286-4cd8-a807-25892d0c20a3",
      "credentials": {
        "gmailOAuth2": {
          "id": "wybBPHDCqRQ2e6cH",
          "name": "Gmail account"
        }
      }
    }
  ],
  "connections": {
    "Check RAM usage": {
      "main": [
        [
          {
            "node": "Check Disk usage",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge check results",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "Check Disk usage": {
      "main": [
        [
          {
            "node": "Check CPU usage",
            "type": "main",
            "index": 0
          },
          {
            "node": "Merge check results",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Check CPU usage": {
      "main": [
        [
          {
            "node": "Merge check results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge check results": {
      "main": [
        [
          {
            "node": "Check results against thresholds",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check results against thresholds": {
      "main": [
        [
          {
            "node": "Gmail",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger": {
      "main": [
        [
          {
            "node": "Check RAM usage",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "pinData": {},
  "meta": {
    "templateId": "2951",
    "templateCredsSetupCompleted": true,
    "instanceId": "3a518cf9c1233b7b7bac22dfea1751b4d34a0a3fbe239239f0d74077e5203687"
  }
}

💬 Nếu có bất kỳ thắc mắc nào, hãy để lại comment bên dưới để được giải đáp nhanh nhất!

Categorized in:

Templates N8N,