---
name: system-inspect
description: 系统巡检技能 - 模块化巡检服务器、Redis、Kafka、MySQL、Elasticsearch、Nginx、Nacos、ClickHouse、K8s，输出到 Excel
---

## 功能说明

**模块化设计**，支持**本地 (local)**和**远程 (remote)**两种执行模式：

1. **服务器巡检**: CPU、内存、磁盘、系统限制 (nofile/nproc)
2. **Redis 配置**: 内存配置、已用内存、连接数
3. **Kafka 配置**: JVM 配置 (Xms/Xmx)、CPU/内存使用
4. **MySQL 配置**: Buffer Pool、最大连接数、当前连接数
5. **Elasticsearch**: JVM 配置、IK 插件、密码认证
6. **Nginx**: worker_rlimit_nofile、worker_connections
7. **Nacos**: JVM 配置、CPU/内存使用
8. **ClickHouse**: 内存配置、服务器内存占比、超 80% 告警
9. **K8s Deployment**: resources、JVM 参数

## 安全限制

**【只读巡检】** 本脚本仅执行查询命令，不进行任何修改

禁止命令：`rm`, `mv`, `cp`, `chmod`, `chown`, `dd`, `truncate`, `shred`, `write`, `tee` 等

## 使用方法

### 1. 配置巡检服务

编辑 `config/hosts.conf` 文件：

```bash
# 本地执行（在当前服务器）
SERVER=local:localhost
K8S=local:localhost:seeyon-prd

# 远程执行（SSH 到远程服务器）
REDIS=remote:192.168.1.100:localhost:6379:password
MYSQL=remote:192.168.1.100:localhost:3306:root:password
KAFKA=remote:192.168.1.101
```

### 2. 执行巡检

```bash
# 使用配置文件（推荐）
bash .opencode/skills/system-inspect/inspect.sh -c config/hosts.conf

# 只巡检指定服务
bash .opencode/skills/system-inspect/inspect.sh \
  -c config/hosts.conf \
  -s SERVER -s REDIS -s MYSQL

# 指定输出文件名
bash .opencode/skills/system-inspect/inspect.sh \
  -c config/hosts.conf \
  -o my_inspection
```

### 3. 双模式说明

**本地模式 (local)** - 在当前服务器直接执行：
```bash
SERVER=local:localhost
K8S=local:localhost:seeyon-prd
```

**远程模式 (remote)** - 通过 SSH 到远程服务器执行：
```bash
# SSH 到 192.168.1.100，检查 Redis
REDIS=remote:192.168.1.100:localhost:6379:password

# SSH 到 192.168.1.101，检查 MySQL
MYSQL=remote:192.168.1.101:localhost:3306:root:password
```

### 4. 输出示例

执行成功后生成 Excel 文件：

```
inspection_report_20260323_143022.xlsx
```

包含的 Sheet（仅包含已配置的服务）：
1. 服务器巡检
2. Redis 配置
3. Kafka 配置
4. MySQL 配置
5. Elasticsearch 配置
6. Nginx 配置
7. Nacos 配置
8. ClickHouse 配置
9. K8s Deployment 配置

## 配置文件格式

```bash
# 格式：服务=模式:SSH 主机：巡检参数...

# 服务器巡检（本地）
SERVER=local:localhost

# Redis 巡检（远程）
# 参数：SSH 主机:Redis 主机:Redis 端口：密码
REDIS=remote:192.168.1.100:localhost:6379:your_password

# MySQL 巡检（远程）
# 参数：SSH 主机:MySQL 主机:MySQL 端口：用户：密码
MYSQL=remote:192.168.1.100:localhost:3306:root:your_password

# Elasticsearch 巡检（远程）
# 参数：SSH 主机:ES 主机:ES 端口 [:用户：密码]
ES=remote:192.168.1.100:localhost:9200

# K8s 巡检（本地）
# 参数：SSH 主机：命名空间
K8S=local:localhost:seeyon-prd
```

## 前置要求

- SSH 客户端
- kubectl (K8s 巡检，仅本地模式需要)
- redis-cli (Redis 巡检)
- mysql 客户端 (MySQL 巡检)
- **excel-gen**（Go 编译的 Linux amd64 版本，运行无需依赖）

## 文件说明

| 文件 | 说明 |
|------|------|
| `inspect.sh` | 主巡检脚本（模块化版本） |
| `config/hosts.conf` | 配置文件 |
| `modules/base.sh` | 基础模板 |
| `modules/server.sh` | 服务器巡检模块 |
| `modules/redis.sh` | Redis 巡检模块 |
| `modules/kafka.sh` | Kafka 巡检模块 |
| `modules/mysql.sh` | MySQL 巡检模块 |
| `modules/elasticsearch.sh` | Elasticsearch 巡检模块 |
| `modules/nginx.sh` | Nginx 巡检模块 |
| `modules/nacos.sh` | Nacos 巡检模块 |
| `modules/clickhouse.sh` | ClickHouse 巡检模块 |
| `modules/k8s.sh` | K8s 巡检模块 |
| `scripts/excel-gen` | Excel 生成器 (Linux amd64 编译版本) |
| `scripts/excel-gen.go` | Go 源代码 (可自行重新编译) |

## 自行编译

如需其他平台，可自行编译：

```bash
cd scripts
go build -o excel-gen excel-gen.go

# 交叉编译
GOOS=linux GOARCH=amd64 go build -o excel-gen excel-gen.go
GOOS=darwin GOARCH=arm64 go build -o excel-gen-mac excel-gen.go
GOOS=windows GOARCH=amd64 go build -o excel-gen.exe excel-gen.go
```

## 模块接口

每个模块支持独立调用：

```bash
# 本地模式
bash modules/redis.sh local localhost localhost 6379 password

# 远程模式
bash modules/redis.sh remote 192.168.1.100 localhost 6379 password
```
