在C#中实现服务器性能监控并发送邮件保存日志,你可以使用.NET框架中的几个关键组件:`System.Diagnostics` 来监控性能,`System.Net.Mail` 来发送邮件,以及`System.IO` 来处理文件操作。
下面是一个简化的示例,展示了如何监控CPU使用率,并在CPU使用率超过某个阈值时发送邮件并保存日志。
首先,你需要在项目中添加对`System.Net.Mail`的引用(如果你使用的是.NET Core或.NET 5/6等较新版本,可能需要通过NuGet安装`System.Net.Mail`或使用`MailKit`等库,因为`System.Net.Mail`在.NET Core及更高版本中不是直接支持的)。
using System;
using System.Diagnostics;
using System.IO;
using System.Net;
using System.Net.Mail;
using System.Threading;
class ServerMonitor
{
private const int ThresholdCpuUsage = 80; // CPU使用率阈值
private const string MailFrom = "your-email@example.com";
private const string MailTo = "recipient-email@example.com";
private const string MailSubject = "Server Performance Alert";
private const string SmtpServer = "smtp.example.com";
private const int SmtpPort = 587;
private const string SmtpUsername = "your-smtp-username";
private const string SmtpPassword = "your-smtp-password";
static void Main(string[] args)
{
while (true)
{
try
{
// 监控CPU使用率
float cpuUsage = GetCpuUsage();
if (cpuUsage > ThresholdCpuUsage)
{
// 发送邮件并保存日志
string logMessage = $"Alert: CPU usage is {cpuUsage}% at {DateTime.Now}";
SendEmail(logMessage);
SaveLog(logMessage);
}
// 等待一段时间再次检查
Thread.Sleep(60000); // 每60秒检查一次
}
catch (Exception ex)
{
// 记录错误或发送错误邮件(这里简单打印到控制台)
Console.WriteLine($"Error: {ex.Message}");
}
}
}
private static float GetCpuUsage()
{
// 这里简化处理,实际可能需要更复杂的逻辑来获取CPU使用率
// 示例:这里直接返回一个模拟值
return 75.0f; // 假设的CPU使用率
}
private static void SendEmail(string message)
{
using (var client = new SmtpClient(SmtpServer, SmtpPort))
{
client.Credentials = new NetworkCredential(SmtpUsername, SmtpPassword);
client.EnableSsl = true; // 根据你的SMTP服务器配置可能需要启用SSL
using (var mail = new MailMessage(MailFrom, MailTo, MailSubject, message))
{
client.Send(mail);
}
}
}
private static void SaveLog(string message)
{
string logPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "ServerLogs.txt");
File.AppendAllText(logPath, $"{message}\n");
}
}
**注意**:
1. `GetCpuUsage` 方法在这个示例中只是返回了一个模拟的CPU使用率。在实际应用中,你可能需要使用更复杂的逻辑来准确获取CPU使用率,如通过读取性能计数器(`PerformanceCounter` 类)。
2. 邮件发送部分使用了SMTP协议,你需要根据你的邮件服务器提供商的指示修改SMTP服务器地址、端口、用户名和密码等信息。
3. 日志文件保存在用户的“我的文档”文件夹中,你也可以根据需要修改这个路径。
4. 这个示例程序会持续运行并每60秒检查一次CPU使用率,如果超过阈值,则发送邮件并保存日志。你可能需要将其部署为Windows服务或类似的后台任务,以确保它在没有用户交互的情况下运行。