# linux-server-monitor **Repository Path**: renlong/linux-server-monitor ## Basic Information - **Project Name**: linux-server-monitor - **Description**: 一个专注于Linux服务器监控的开源项目,提供实时性能监测、故障预警及日志分析功能,助力系统管理员高效管理服务器。 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 1 - **Created**: 2025-04-24 - **Last Updated**: 2025-07-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Linux服务器健康监控工具 这是一个用于监控Linux服务器健康状态的Java工具。它通过SSH连接到远程服务器,执行各种命令来收集系统指标,并生成一份健康状态报告。 ## 功能特点 - 支持多台服务器并行监控 - 灵活的配置项,通过JSON文件配置 - 支持密码和密钥两种SSH认证方式 - 监控项包括:CPU使用率、内存使用情况、磁盘空间、系统负载、运行时间等 - 支持监控关键服务状态 - 收集最近的系统错误日志 - 支持文本和HTML格式的监控报告 - 生成格式化的健康状态报告 ## 配置文件 程序使用两个配置文件: 1. **config.json** - 全局监控配置 2. **servers.json** - 服务器连接信息配置 ### 配置文件位置 配置文件可以放置在以下位置(按优先级排序): 1. 程序运行目录下(推荐,便于修改) 2. 打包在JAR文件中(作为默认配置) **重要提示**:为方便修改,强烈建议将配置文件放在程序运行目录下,而不是使用JAR包中的默认配置。 ### config.json 结构说明 ```json { "resultFilePath": "server_health_report.txt", // 文本报告文件输出路径 "htmlReportPath": "server_health_report.html", // HTML报告文件输出路径 "threadPoolSize": 10, // 线程池大小(并行监控服务器数) "connectionTimeout": 10000, // SSH连接超时时间(毫秒) "commandTimeout": 5000, // 命令执行超时时间(毫秒) "monitoringServices": [ // 要监控的服务列表 "sshd", "httpd", "mysqld", "nginx", "tomcat" ], "commands": { // 监控命令映射表 "cpu": "top -bn1 | grep \"Cpu(s)\" | awk '{print $2 + $4}'", "memory": "free -m", "disk": "df -h", // ... 其他命令 } } ``` ### servers.json 结构说明 ```json [ { "id": "server1", // 服务器唯一标识 "name": "应用服务器", // 服务器名称/别名 "host": "192.168.1.100", // 主机地址 "port": 22, // SSH端口 "username": "root", // 登录用户名 "authType": "PASSWORD", // 认证类型:PASSWORD或KEY "password": "your_password", // 密码(PASSWORD认证) "privateKeyPath": "", // 私钥文件路径(KEY认证) "monitorItems": [ // 监控项列表 "cpu", "memory", "disk", "load", "processes", "uptime", "network", "services", "logs" ], "timeout": 10000 // 连接超时时间(毫秒) }, // 可添加多台服务器... ] ``` ## 使用方法 1. 确保Java环境已安装(需要Java 8或更高版本) 2. 下载发布的JAR文件:linux-server-monitor-1.0-SNAPSHOT-jar-with-dependencies.jar 3. 在与JAR相同的目录下创建或修改config.json和servers.json配置文件 4. 运行程序: ``` java -jar linux-server-monitor-1.0-SNAPSHOT-jar-with-dependencies.jar ``` 5. 查看生成的健康状态报告: - 文本格式报告(默认为server_health_report.txt) - HTML格式报告(默认为server_health_report.html) ## 报告格式 程序支持两种格式的监控报告: 1. **文本格式报告**:简单的文本文件,便于在命令行查看或发送邮件。 2. **HTML格式报告**:美观的表格样式,支持颜色标记指标状态,便于直观查看。 - 绿色:正常状态 - 橙色:警告状态(高负载) - 红色:严重状态(资源紧张) HTML报告包含两部分内容: - 服务器状态概览表:所有服务器的简要状态 - 详细信息部分:每台服务器的详细监控数据 ## 自定义报告模板 程序使用Freemarker模板引擎生成报告,您可以自定义报告的格式: 1. 在程序运行目录创建`templates`文件夹 2. 在该文件夹中创建以下模板文件: - `text_report.ftl` - 文本报告模板 - `html_report.ftl` - HTML报告模板 如果这些文件存在,程序将优先使用您的自定义模板;否则将使用内置的默认模板。 ### 模板语法 模板使用Freemarker语法,主要数据模型包括: - `reportTime` - 报告生成时间 - `servers` - 服务器状态列表,每个服务器包含: - `server` - 服务器配置信息(id, name, host等) - `online` - 是否在线 - `cpuUsage` - CPU使用率 - `memoryInfo` - 内存使用情况 - `diskInfoList` - 磁盘使用情况列表 - `systemLoad` - 系统负载 - `uptime` - 系统运行时间 - `processCount` - 进程数 - `networkConnections` - 网络连接数 - `serviceStatus` - 服务状态映射表 - `recentErrors` - 系统错误日志列表 更多Freemarker语法请参考[Freemarker官方文档](https://freemarker.apache.org/docs/index.html)。 ## 监控项说明 程序支持以下监控项: - **cpu**: CPU使用率 - **memory**: 内存使用情况 - **disk**: 磁盘空间使用情况 - **load**: 系统负载 - **processes**: 进程数量 - **uptime**: 系统运行时间 - **network**: 网络连接数 - **services**: 关键服务状态 - **logs**: 最近的系统错误日志 在服务器配置的monitorItems数组中可自由组合这些项目。 ## 系统截图 ![监控报告HTML](images/image.png) ## 系统要求 - Java 8或更高版本 - 被监控服务器需开启SSH服务 - 被监控服务器需授予相应命令的执行权限