OPC(观测—模式—纠正)不是告警平台,而是一种运行时自检闭环:埋点采证据,模式库匹配故障指纹,触发就地修复。下面这段 Python 装饰器把它压进普通函数里。
def opc_observe(func):
@functools.wraps(func)
def wrapper(*args, **kw):
try:
return func(*args, **kw)
except Exception as e:
OPC_DIARY.append({
"ts": time.time(),
"func": func.__name__,
"trace": traceback.format_exc(),
"args": repr(args)[:200]
})
raise
return wrapper
PATTERNS = [
{"name": "db_timeout", "match": lambda s:
"OperationalError" in s["trace"]
and "timeout" in s["trace"].lower()}
]
def diagnose(snap):
for p in PATTERNS:
if p["match"](snap):
return p["name"]
return "unknown"
识别到 db_timeout 时,自动让连接池重建,而不是等运维介入。
@opc_observe
def query(sql):
conn = pool.get()
return conn.execute(sql)
系统开始拥有自己的短期记忆,故障从凭印象复盘变成按指纹回放。