更新RMDC系统的模块SKILL
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
# 审计日志对齐规范
|
||||
|
||||
## 与 rmdc-audit-log 对齐
|
||||
|
||||
所有模块的审计记录必须与 `rmdc-audit-log` 模块的格式保持一致。
|
||||
|
||||
## 必须字段
|
||||
|
||||
| 字段 | 类型 | 说明 |
|
||||
|:---|:---|:---|
|
||||
| id | uint | 审计记录ID |
|
||||
| user_id | uint | 操作人ID |
|
||||
| username | string | 操作人用户名 |
|
||||
| action | string | 操作类型 |
|
||||
| resource_type | string | 资源类型 |
|
||||
| resource_id | string | 资源ID |
|
||||
| details | json | 操作详情 |
|
||||
| ip_address | string | 客户端IP |
|
||||
| user_agent | string | 客户端UA |
|
||||
| timestamp | timestamp | 操作时间 |
|
||||
| result | string | 操作结果 success/failed |
|
||||
|
||||
## 操作类型规范
|
||||
|
||||
| 模块 | 操作类型 |
|
||||
|:---|:---|
|
||||
| user-auth | USER_LOGIN, USER_LOGOUT, USER_CREATE, USER_UPDATE, USER_DELETE, PASSWORD_CHANGE, PERMISSION_GRANT |
|
||||
| jenkins-dac | BUILD_TRIGGER, BUILD_CANCEL, PERMISSION_CHANGE |
|
||||
| exchange-hub | COMMAND_SEND, COMMAND_COMPLETE |
|
||||
| watchdog | DEPLOYMENT_START, DEPLOYMENT_COMPLETE, TOTP_VERIFY |
|
||||
| project-mgmt | PROJECT_CREATE, PROJECT_UPDATE, AUTH_GRANT |
|
||||
| work-procedure | WORKFLOW_CREATE, WORKFLOW_APPROVE, WORKFLOW_REJECT |
|
||||
|
||||
## 审计表保护
|
||||
|
||||
审计表必须设置以下保护:
|
||||
1. 禁止 DELETE 操作
|
||||
2. 禁止 UPDATE 操作(除标记字段外)
|
||||
3. 定期备份
|
||||
4. 独立存储(建议)
|
||||
|
||||
```sql
|
||||
-- 创建只允许 INSERT 的触发器
|
||||
CREATE OR REPLACE FUNCTION prevent_audit_modify()
|
||||
RETURNS TRIGGER AS $$
|
||||
BEGIN
|
||||
RAISE EXCEPTION 'Audit log modification is not allowed';
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
CREATE TRIGGER audit_log_protect
|
||||
BEFORE UPDATE OR DELETE ON audit_logs
|
||||
FOR EACH ROW EXECUTE FUNCTION prevent_audit_modify();
|
||||
```
|
||||
|
||||
## 审计记录示例
|
||||
|
||||
```go
|
||||
// user-auth 模块
|
||||
audit.Record(audit.Entry{
|
||||
UserID: operatorID,
|
||||
Username: operatorName,
|
||||
Action: "USER_CREATE",
|
||||
ResourceType: "user",
|
||||
ResourceID: strconv.Itoa(int(newUser.ID)),
|
||||
Details: map[string]interface{}{
|
||||
"username": newUser.Username,
|
||||
"role": newUser.Role,
|
||||
},
|
||||
IPAddress: c.ClientIP(),
|
||||
UserAgent: c.Request.UserAgent(),
|
||||
Result: "success",
|
||||
})
|
||||
```
|
||||
58
1-AgentSkills/managing-observability/reference/log-format.md
Normal file
58
1-AgentSkills/managing-observability/reference/log-format.md
Normal file
@@ -0,0 +1,58 @@
|
||||
# 日志格式规范
|
||||
|
||||
## 结构化日志
|
||||
|
||||
所有日志必须使用结构化格式,禁止字符串拼接。
|
||||
|
||||
### 正确示例
|
||||
```go
|
||||
log.WithFields(log.Fields{
|
||||
"user_id": userID,
|
||||
"action": "login",
|
||||
"request_id": requestID,
|
||||
"duration": duration.Milliseconds(),
|
||||
}).Info("用户登录成功")
|
||||
```
|
||||
|
||||
### 错误示例
|
||||
```go
|
||||
// ❌ 禁止
|
||||
log.Info("用户 " + username + " 登录成功,耗时 " + duration.String())
|
||||
```
|
||||
|
||||
## 必须字段
|
||||
|
||||
| 字段 | 说明 | 示例 |
|
||||
|:---|:---|:---|
|
||||
| request_id | 请求唯一标识 | uuid |
|
||||
| user_id | 操作用户ID | 123 |
|
||||
| action | 操作类型 | login, create_user |
|
||||
| duration | 耗时(毫秒) | 150 |
|
||||
|
||||
## 日志级别
|
||||
|
||||
| 级别 | 使用场景 |
|
||||
|:---|:---|
|
||||
| ERROR | 错误,需要关注和处理 |
|
||||
| WARN | 警告,可能的问题 |
|
||||
| INFO | 重要业务事件 |
|
||||
| DEBUG | 调试信息,生产环境关闭 |
|
||||
|
||||
## 敏感信息脱敏
|
||||
|
||||
必须脱敏的字段:
|
||||
- 密码(任何形式)
|
||||
- Token / Secret
|
||||
- 身份证号
|
||||
- 银行卡号
|
||||
- 手机号(中间四位)
|
||||
|
||||
```go
|
||||
// 脱敏工具
|
||||
func maskPhone(phone string) string {
|
||||
if len(phone) >= 11 {
|
||||
return phone[:3] + "****" + phone[7:]
|
||||
}
|
||||
return "****"
|
||||
}
|
||||
```
|
||||
@@ -0,0 +1,52 @@
|
||||
# 指标命名规范
|
||||
|
||||
## 命名格式
|
||||
|
||||
```
|
||||
rmdc_{module}_{resource}_{action}_{unit}
|
||||
```
|
||||
|
||||
## 命名规则
|
||||
|
||||
1. 全小写,下划线分隔
|
||||
2. 以 `rmdc_` 前缀开头
|
||||
3. 包含模块名
|
||||
4. 描述清晰的资源和动作
|
||||
5. 带单位后缀(如适用)
|
||||
|
||||
## 常用后缀
|
||||
|
||||
| 后缀 | 说明 | 示例 |
|
||||
|:---|:---|:---|
|
||||
| _total | 计数器 | rmdc_user_auth_login_total |
|
||||
| _seconds | 时间(秒) | rmdc_api_request_duration_seconds |
|
||||
| _bytes | 大小(字节) | rmdc_file_size_bytes |
|
||||
| _ratio | 比率 | rmdc_cache_hit_ratio |
|
||||
|
||||
## 示例
|
||||
|
||||
```go
|
||||
// 计数器
|
||||
rmdc_user_auth_login_total{status="success"}
|
||||
rmdc_user_auth_login_total{status="failed"}
|
||||
|
||||
// 直方图
|
||||
rmdc_user_auth_request_duration_seconds{endpoint="/api/auth/login"}
|
||||
|
||||
// Gauge
|
||||
rmdc_user_auth_active_sessions
|
||||
```
|
||||
|
||||
## 标签规范
|
||||
|
||||
- 标签名小写下划线
|
||||
- 标签值使用小写
|
||||
- 避免高基数标签(如 user_id)
|
||||
|
||||
```go
|
||||
// ✅ 正确
|
||||
loginCounter.WithLabelValues("success").Inc()
|
||||
|
||||
// ❌ 错误 - 高基数
|
||||
loginCounter.WithLabelValues(userID).Inc()
|
||||
```
|
||||
Reference in New Issue
Block a user