Quellcode durchsuchen

read DOMAIN as server name from env

guoziyun vor 1 Woche
Ursprung
Commit
f3fd88274c
1 geänderte Dateien mit 40 neuen und 30 gelöschten Zeilen
  1. 40 30
      service/monitor/check-disk.js

+ 40 - 30
service/monitor/check-disk.js

@@ -1,30 +1,30 @@
 /// 磁盘空间监控
-const { exec } = require('child_process');
-const { promisify } = require('util');
+const { exec } = require("child_process");
+const { promisify } = require("util");
 const execAsync = promisify(exec);
 
-const { sendEmail } = require('./email');
-const { sendSms } = require('./sms');
-const SmsTemplate = require('./sms-templates');
+const { sendEmail } = require("./email");
+const { sendSms } = require("./sms");
+const SmsTemplate = require("./sms-templates");
 
 // 阈值配置
 const USAGE_THRESHOLD = 90; // 使用率阈值 90%
 const FREE_SPACE_THRESHOLD = 10; // 剩余空间阈值 10G
-const SERVER_NAME = process.env.NODE_ENV || 'unknown'; // 从环境变量读取服务器名称
+const SERVER_NAME = process.env.DOMAIN || "unknown"; // 从环境变量读取服务器名称
 
 async function getDiskInfo() {
   try {
-    const { stdout } = await execAsync('df -h /');
-    const lines = stdout.trim().split('\n');
-    
+    const { stdout } = await execAsync("df -h /");
+    const lines = stdout.trim().split("\n");
+
     if (lines.length < 2) {
-      throw new Error('无法解析df命令输出');
+      throw new Error("无法解析df命令输出");
     }
 
     // 解析df输出
     const dataLine = lines[1].trim().split(/\s+/);
     const [filesystem, size, used, avail, usePercent, mountpoint] = dataLine;
-    
+
     return {
       filesystem,
       size,
@@ -32,7 +32,7 @@ async function getDiskInfo() {
       avail,
       usePercent: parseInt(usePercent),
       mountpoint,
-      raw: stdout
+      raw: stdout,
     };
   } catch (error) {
     throw new Error(`获取磁盘信息失败: ${error.message}`);
@@ -43,35 +43,43 @@ function parseSize(sizeStr) {
   // 将 "106G", "1.5T" 等格式转换为GB数值
   const match = sizeStr.match(/^([\d.]+)([KMGT]?)$/i);
   if (!match) return 0;
-  
+
   const value = parseFloat(match[1]);
   const unit = match[2].toUpperCase();
-  
-  const multipliers = { '': 1/1024, 'K': 1/1024/1024, 'M': 1/1024, 'G': 1, 'T': 1024 };
+
+  const multipliers = {
+    "": 1 / 1024,
+    K: 1 / 1024 / 1024,
+    M: 1 / 1024,
+    G: 1,
+    T: 1024,
+  };
   return value * (multipliers[unit] || 1);
 }
 
 async function checkDiskSpace() {
   let diskInfo;
-  
+
   try {
     diskInfo = await getDiskInfo();
   } catch (e) {
-    console.error('磁盘信息获取失败:', e.message);
+    console.error("磁盘信息获取失败:", e.message);
     return {
       result: false,
       errcode: 200,
       title: `磁盘监控:无法获取磁盘信息 [${SERVER_NAME}]`,
       sms: SmsTemplate.SMS_DISK_ERROR,
       data: [`服务器: ${SERVER_NAME}`, e.message],
-      diskInfo: null
+      diskInfo: null,
     };
   }
 
   const usagePercent = diskInfo.usePercent;
   const availGB = parseSize(diskInfo.avail);
-  
-  console.log(`磁盘使用率: ${usagePercent}%, 剩余空间: ${availGB.toFixed(2)}GB`);
+
+  console.log(
+    `磁盘使用率: ${usagePercent}%, 剩余空间: ${availGB.toFixed(2)}GB`,
+  );
 
   // 检查是否超过阈值
   if (usagePercent >= USAGE_THRESHOLD || availGB < FREE_SPACE_THRESHOLD) {
@@ -80,7 +88,9 @@ async function checkDiskSpace() {
       reasons.push(`使用率达到 ${usagePercent}% (阈值: ${USAGE_THRESHOLD}%)`);
     }
     if (availGB < FREE_SPACE_THRESHOLD) {
-      reasons.push(`剩余空间仅 ${availGB.toFixed(2)}GB (阈值: ${FREE_SPACE_THRESHOLD}GB)`);
+      reasons.push(
+        `剩余空间仅 ${availGB.toFixed(2)}GB (阈值: ${FREE_SPACE_THRESHOLD}GB)`,
+      );
     }
 
     return {
@@ -96,14 +106,14 @@ async function checkDiskSpace() {
         `已使用: ${diskInfo.used}`,
         `可用空间: ${diskInfo.avail}`,
         `使用率: ${usagePercent}%`,
-        '',
-        '告警原因:',
+        "",
+        "告警原因:",
         ...reasons,
-        '',
-        '详细信息:',
-        diskInfo.raw
+        "",
+        "详细信息:",
+        diskInfo.raw,
       ],
-      diskInfo
+      diskInfo,
     };
   }
 
@@ -116,15 +126,15 @@ async function checkDiskSpace() {
       `服务器: ${SERVER_NAME}`,
       `文件系统: ${diskInfo.filesystem}`,
       `使用率: ${usagePercent}%`,
-      `剩余空间: ${diskInfo.avail}`
+      `剩余空间: ${diskInfo.avail}`,
     ],
-    diskInfo
+    diskInfo,
   };
 }
 
 async function run() {
   console.log("检查磁盘空间...", new Date());
-  
+
   try {
     const result = await checkDiskSpace();
     console.log(result);