合同管理系统监控体系:从指标采集到智能告警的全栈实践
一、监控架构设计
针对合同管理业务特性的监控分层模型:
1.1 监控维度矩阵
监控层级 | 核心指标 | 采集方式 | 告警阈值 |
---|---|---|---|
基础设施 | CPU/Mem/Disk | Node Exporter | CPU≥90%持续5m |
应用性能 | API响应时间 | Prometheus+Micrometer | P99≥2s |
业务过程 | 合同签署成功率 | 自定义埋点+ELK | 成功率≤99% |
安全合规 | 敏感操作日志 | Audit Log+区块链 | 非法访问尝试 |
1.2 技术栈选型
合同系统监控技术栈:
■ 指标采集:Prometheus(时间序列数据库)
■ 日志分析:Loki+ELK(结构化日志处理)
■ 可视化:Grafana(统一监控看板)
■ 告警管理:Alertmanager+钉钉机器人
二、核心指标采集
合同系统特有的关键监控指标设计:
2.1 业务指标定义
指标名称 | 计算方式 | 数据源 | 业务意义 |
---|---|---|---|
合同签署率 | 成功签署数/发起总数 | 业务数据库 | 流程健康度 |
模板加载耗时 | P99响应时间 | APM探针 | 用户体验 |
印章调用频次 | 调用次数/小时 | API网关日志 | 异常行为检测 |
2.2 Prometheus配置示例
自定义业务指标采集:
# 合同签署指标规则 groups: - name: contract_metrics rules: - record: contract:sign_success_rate expr: sum(rate(contract_sign_total{status="success"}[5m])) / sum(rate(contract_sign_total[5m])) labels: service: contract-sign - alert: HighSignFailureRate expr: contract:sign_success_rate < 0.99 for: 10m annotations: summary: "合同签署失败率超过阈值" description: "当前签署成功率 {{ $value }},低于99%标准" # Java应用监控配置 - job_name: 'contract-service' metrics_path: '/actuator/prometheus' static_configs: - targets: ['contract-service:8080'] relabel_configs: - source_labels: [__address__] regex: '(.*):\d+' target_label: 'instance' replacement: '$1'
三、智能告警体系
分级告警与智能抑制策略:
3.1 告警分级策略
告警级别 | 触发条件 | 通知方式 | 处理时限 |
---|---|---|---|
P0-紧急 | 服务不可用 | 电话+短信 | 15分钟 |
P1-严重 | 核心功能降级 | 企业微信+邮件 | 1小时 |
P2-警告 | 非核心异常 | 钉钉机器人 | 4小时 |
3.2 Alertmanager配置
告警路由与抑制规则:
route: receiver: 'critical-team' group_by: [alertname, cluster] routes: - match: severity: 'critical' receiver: 'pagerduty' - match_re: service: 'contract|sign' receiver: 'contract-team' inhibit_rules: - source_match: severity: 'critical' target_match: severity: 'warning' equal: ['alertname'] receivers: - name: 'contract-team' webhook_configs: - url: 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxxx' send_resolved: true - name: 'pagerduty' pagerduty_configs: - routing_key: 'your-pagerduty-key'
▶ 告警模板示例:
[P1] 合同签署服务异常
告警状态: FIRING
触发时间: 2023-08-20 14:30:45
当前值: 签署成功率92.3%
故障实例: contract-sign-7d8f6
查看仪表盘
四、日志审计方案
满足等保要求的日志治理体系:
4.1 关键日志分类
日志类型 | 存储期限 | 采集方式 | 合规依据 |
---|---|---|---|
操作日志 | 6个月 | Filebeat→ES | 等保2.0 8.1.3 |
审计日志 | 3年 | 区块链存证 | 网络安全法21条 |
性能日志 | 1个月 | Promtail→Loki | 内部SLA标准 |
4.2 区块链存证实现
审计日志上链流程:
// 日志数据结构 public class AuditLog { private String traceId; private String operator; private String operation; private String params; private long timestamp; private String signature; } // 日志处理服务 @Service public class LogService { @Async public void processAuditLog(AuditLog log) { // 1. 本地存储 logRepository.save(log); // 2. 计算哈希值 String hash = DigestUtils.sha256Hex( log.getTraceId() + log.getTimestamp() + log.getParams()); // 3. 调用区块链存证 blockchainClient.sendToChain( "audit-log", Map.of( "traceId", log.getTraceId(), "hash", hash, "timestamp", System.currentTimeMillis() )); } } // 区块链查询接口 @GetMapping("/log/proof") public String getLogProof(@RequestParam String traceId) { return blockchainClient.query( "audit-log", "getProof", Collections.singletonList(traceId)); }
五、监控大屏设计
面向不同角色的可视化方案:
5.1 Grafana看板配置
看板类型 | 核心指标 | 刷新频率 | 使用角色 |
---|---|---|---|
运维视图 | CPU/内存/网络 | 10s | SRE团队 |
业务视图 | 签署量/成功率 | 1m | 产品经理 |
安全视图 | 登录尝试/敏感操作 | 5m | 安全团队 |
5.2 监控工具包
▶ 免费获取资源:
关注「智能运维观察」公众号领取:
• 《合同系统监控规范》
• Grafana仪表盘模板
• 告警规则最佳实践