500, "msg" => "数据库连接失败:" . mysqli_connect_error() ], JSON_UNESCAPED_UNICODE); exit; } mysqli_set_charset($conn,"utf8mb4"); $rawBody = file_get_contents('php://input'); $alertData = json_decode($rawBody, true); if (!is_array($alertData) || empty($alertData['alerts'])) { echo json_encode([ "code" => 400, "msg" => "未获取到有效告警数据" ], JSON_UNESCAPED_UNICODE); mysqli_close($conn); exit; } $insertCount = 0; foreach ($alertData['alerts'] as $alert) { $alertName = mysqli_real_escape_string($conn, $alert['labels']['alertname'] ?? "未知告警"); $instance = mysqli_real_escape_string($conn, $alert['labels']['instance'] ?? ""); $severity = mysqli_real_escape_string($conn, $alert['labels']['severity'] ?? "warning"); $status = $alert['status'] ?? "firing"; $startsAt = mysqli_real_escape_string($conn, $alert['startsAt'] ?? date("Y-m-d H:i:s")); $endsAt = isset($alert['endsAt']) ? "'" . mysqli_real_escape_string($conn, $alert['endsAt']) . "'" : "NULL"; $fingerprint= mysqli_real_escape_string($conn, $alert['fingerprint'] ?? md5($alertName.$instance.$startsAt)); $content = mysqli_real_escape_string($conn, json_encode($alert, JSON_UNESCAPED_UNICODE)); $alertType = $status === "resolved" ? 2 : 1; $checkSql = "SELECT id FROM alert_log WHERE mail_uid = '$fingerprint'"; $checkRes = mysqli_query($conn, $checkSql); if (mysqli_num_rows($checkRes) > 0) continue; $insertSql = "INSERT INTO alert_log (mail_uid, alert_type, alert_name, instance, severity, starts_at, ends_at, content, receive_time) VALUES ('$fingerprint', $alertType, '$alertName', '$instance', '$severity', '$startsAt', $endsAt, '$content', NOW())"; if (mysqli_query($conn, $insertSql)) $insertCount++; } echo json_encode([ "code" => 200, "msg" => "告警处理完成", "insert_num" => $insertCount ], JSON_UNESCAPED_UNICODE); mysqli_close($conn); ?>