资产

参考

Mopheus IT 资产本体元模型(TBox)严格技术契约,涵盖 17 种标准概念的属性模式约束、7 大规范拓扑公理矩阵与声明式清单格式。

Mopheus IT 资产系统基于严格的本体元模型(TBox)构建。所有导入图谱的实体(ABox)必须通过对应的 JSONSchema 技术属性校验,所有有向关系边(asset_relations)必须满足拓扑公理白名单。

本参考文档面向 SRE 工程师、后端开发者与 AI 智能体技能作者,提供系统内置概念模式与公理约束的权威技术契约。


元模型架构契约 (TBox Contract)

在 Mopheus 知识图谱中,每一项资产实体均属于且仅属于一个概念元模型 (Concept)。系统在写入资产与拓扑边时执行以下强制校验:

  1. 强类型技术属性约束 (attributes):
    • 每个 Concept 均绑定专属的 attributes_schema(JSONSchema 规范)。
    • 禁止未定义字段:默认启用 additionalProperties: false,非法或拼写错误的属性将被直接拒绝。
    • 必填属性校验:如 Host 的 management_ip、Database 的 engine 与 db_mode 均为强必填项。
    • 严格枚举限制:节点角色、数据库模式与中间件类型必须精确匹配预设枚举。
  2. 拓扑关系公理验证 (allowed_relations):
    • 实体间的有向边不仅校验 7 大规范谓词,还强校验源端概念与目标端概念的搭配合法性。例如:Service 允许 runs_on 到 Host 或 Container,但禁止直接 runs_on 到 Database。
  3. 因果与 DAG 环路检测:
    • 针对 contains 与 depends_on 等层级与因果调用关系,系统在执行 mop asset apply 时自动执行递归环路检测,阻止拓扑死循环。

17 大核心本体概念规范速查

企业 IT 基础设施划分为 7 大核心领域,共计 17 类标准概念元模型:

领域分类概念 (Concept)核心定位与描述必填技术属性 (required)可选技术属性与枚举限制
业务层Application顶层企业业务系统 (如电商核心、计费系统)(无必填属性)additionalProperties: false
Service可独立部署的微服务或业务组件(无必填属性)codebase_repo (Git 仓库地址)
平台层Cluster高可用管控平面与共识集群cluster_typecluster_type: [oracle_crs, k8s_control_plane, pacemaker, patroni_etcd, keepalived_vrrp]api_endpoint, credential_ref
Container单个容器实例或 K8s Pod(无必填属性)additionalProperties: false
计算层Host物理裸金属服务器、虚拟机或云 ECSmanagement_ipips (IP 数组)role: [worker, control_plane, gateway, standalone]zone, rack, credential_ref
数据库Database逻辑数据库集群或有状态数据服务engine, db_modeengine: 字符串 (如 postgresql, mysql, oracle, tidb, redis, elasticsearch, mogdb, yashandb, oceanbase)db_mode: [single, cluster, distributed, primary_standby, rac]version, credential_ref
DatabaseInstance单个数据库或缓存进程实例portiprole: [primary, standby, read_replica, witness]instance_name, credential_ref (如 swissql://<profile-id>[?server=svc:<service-id>] 或 SSH 凭据)
DatabaseShard分布式数据库逻辑分区或分片组(无必填属性)additionalProperties: false
DatabaseComponent分布式 DB 专用调度/协调/代理节点component_role, portcomponent_role: [proxy, coordinator, storage_node, metadata_pd, es_master, es_data]ip
中间件MessageQueue消息代理集群或流式消息服务mq_typemq_type: [kafka, rocketmq, rabbitmq, emqx, pulsar]endpoints (地址数组), version
网络层VirtualIP高可用浮动虚 IP 或 Oracle SCAN VIPip, rolerole: [vip, scan, floating]
LoadBalancer软硬件负载均衡器或 API 网关lb_typelb_type: [nginx, haproxy, f5, cloud_slb, envoy, apisix, kong, k8s_ingress]ip, ports (端口数组)
DNSRecord域名系统解析记录domain, record_typerecord_type: [A, CNAME, AAAA, PTR]
NetworkDevice物理或虚拟网络设备 (交换机/路由器/防火墙)device_type, mgmt_ipdevice_type: [switch_core, switch_tor, router, firewall, gateway]credential_ref
IPAddress物理网络接口 IP、带外管理或心跳 IPipsubnet
存储层StoragePool分布式或集中式存储池 / 磁盘组storage_typestorage_type: [ceph, nfs, san, asm_diskgroup, local_lvm]
StorageVolume逻辑卷、LUN 或持久化卷 (PV)volume_typevolume_type: [ssd, hdd, nvme, nfs_mount]

7 大拓扑谓词与关系公理合法性矩阵

拓扑图谱中的所有有向关系边(Subject $\to$ Predicate $\to$ Object)采用 7 种不可变规范谓词,且必须严格遵循下述拓扑公理(allowed_relations):

规范谓词 (Predicate)语义方向 (Subject $\to$ Object)合法源端概念 (Subject)允许的目标端概念 (Allowed Object Targets)
contains整体 $\to$ 局部 (静态架构组成)ApplicationService, Database, MessageQueue, VirtualIP, LoadBalancer, DNSRecord
ServiceContainer
ClusterHost, StoragePool
HostIPAddress, StorageVolume
DatabaseDatabaseShard, DatabaseInstance, DatabaseComponent
DatabaseShardDatabaseInstance
NetworkDeviceIPAddress
StoragePoolStorageVolume
runs_on负载 $\to$ 宿主 (物理/逻辑承载)ServiceHost, Container, Cluster
ContainerHost, Cluster
DatabaseInstanceHost, Container
DatabaseComponentHost, Container
MessageQueueHost, Container
VirtualIPHost, NetworkDevice
LoadBalancerHost, Container, NetworkDevice
IPAddressHost, NetworkDevice
StorageVolumeHost
routes_to源端 $\to$ 目标 (流量与路由转发)DNSRecordLoadBalancer, VirtualIP, IPAddress, Host
LoadBalancerService, DatabaseInstance, VirtualIP, Host
VirtualIPDatabaseInstance, DatabaseComponent, Service, Host, LoadBalancer
DatabaseComponentDatabaseInstance, DatabaseComponent
depends_on调用方 $\to$ 依赖方 (运行时业务/因果调用)ApplicationApplication, Service
ServiceService, Database, MessageQueue, VirtualIP, LoadBalancer
ContainerStorageVolume
HostNetworkDevice, StoragePool
DatabaseCluster, StoragePool
DatabaseInstanceStorageVolume
MessageQueueCluster, StoragePool, StorageVolume
replicates_to主数据 $\to$ 副本 (有状态数据复制)DatabaseInstanceDatabaseInstance
clustered_with对等方 $\leftrightarrow$ 对等方 (同级高可用对等)HostHost
DatabaseInstanceDatabaseInstance
DatabaseComponentDatabaseComponent
NetworkDeviceNetworkDevice
manages控制面 $\to$ 目标 (自动化管控与治理)ClusterDatabase, VirtualIP, Service

声明式清单模式规范 (AssetManifest YAML)

Mopheus 通过声明式 YAML 清单执行批量导入、版本控制与状态同步。标准模式定义如下:

version: v1                       # 固定版本标识,必须为 v1
kind: AssetManifest               # 固定对象类型,必须为 AssetManifest
metadata:
  workspace: ecommerce-prod       # 目标工作区 Slug
  environment: prod               # 默认环境:prod | staging | test | dev
assets:
  - id: string                    # [必填] 资产全局唯一标识,推荐使用概念前缀 (如 svc:order-gw)
    concept: string               # [必填] 17 种标准本体概念之一
    name: string                  # [必填] 人类可读的标准名称
    aliases:                      # [选填] 别名列表,供模糊消解匹配
      - string
    status: active                # [必填] 生命周期状态:active | draining | offline | unhealthy
    environment: prod             # [必填] 部署环境:prod | staging | test | dev
    attributes:                   # [选填] 技术属性,受 Concept attributes_schema 严格校验
      key: value
    labels:                       # [选填] 治理标签,自由键值对
      owner_team: string          # 责任团队 (如 order-dev, billing-dba)
      tier: string                # 保障等级 (P0 | P1 | P2 | P3)
      oncall: string              # 值班责任人
relations:
  - subject: string               # [必填] 源端资产 ID
    predicate: string             # [必填] 7 大规范谓词之一
    object: string                # [必填] 目标端资产 ID
    attributes:                   # [选填] 关系边附加属性
      port: 8080

资产 ID 字符集

资产 ID 必须匹配 ^[a-zA-Z0-9][a-zA-Z0-9_.:-]*$:首字符必须为字母或数字,其后仅允许字母、数字、冒号 :、下划线 _、中划线 - 和点 .。斜杠 /、空格、?、#、% 以及非 ASCII 字符会在所有入口(REST API、Manifest YAML、CLI)被拒绝并返回 HTTP 400。请使用冒号代替斜杠,例如 svc:order-gw 而非 svc/order-gw;CLI 会在本地拦截含斜杠的 ID 并提示冒号形式。冒号形式的 ID 是合法的 URL 路径段,无需转义。


通过资产使用 Redis CLI

mopheus tool redis-cli <asset-id-or-name> [--user <username>] -- <redis-cli 参数...> 会在当前工作区解析资产,通过加密凭据 API 读取密码凭据,并调用本机的 redis-cli。资产应为 attributes.engine: redis 的 Database(或概念名为 Redis),选中的密码凭据需要配置连接主机和端口。只有一个密码凭据时可省略 --user;存在多个时需用 --user 指定凭据用户名。连接选项和密码由资产提供,因此不要在 -- 后传入主机、端口或认证选项。

示例:mopheus tool redis-cli cache-prod -- PING。本机 redis-cli 需为 6.0 或更高,以便通过 REDISCLI_AUTH 传递密码而不暴露在进程参数中。Redis 服务端 5.x 使用 default 账号;命名 ACL 用户要求服务端 Redis 6.0 或更高。客户端参数请参考 redis-cli --help。

通过资产使用 MongoDB Shell

mopheus tool mongosh <asset-id-or-name> [--user <username>] -- <mongosh 参数...> 会解析 MongoDB 资产,并从加密凭据 API 读取连接信息和密码,再启动本机 mongosh。资产应设置 attributes.engine: mongodb(也支持 mongo),并配置密码凭据。只有一个密码凭据时可省略 --user;存在多个时用 --user <username> 选择账号。默认认证数据库为 admin。

先在受限权限凭据文件中填写 username: <username> 和 secret.password: <password>,将文件权限设为 0600,再使用 mopheus asset credential add <asset-id> --file <credentials.yaml> 保存凭据。连接 URI 通过子进程环境传递,不会出现在进程参数中。传给 -- 后的参数不能覆盖 host、port、username、password、认证数据库或连接 URI。客户端参数请参考 mongosh --help。

示例:mopheus tool mongosh mongo-prod --user <username> -- --eval 'db.adminCommand({ping: 1})'。

概念探查与 CLI 指令

技术人员与智能体可通过 CLI 在终端实时探查元模型定义:

# 1. 列出当前工作区中注册的所有本体概念及其分类
mop asset concept list

# 2. 获取指定概念的完整属性 Schema 与允许的拓扑公理规则 (JSON 格式)
mop asset concept get Host
mop asset concept get Database

# 3. 校验并应用声明式清单
mop asset apply -f production-topology.yaml

# 4. 导出当前工作区的资产与拓扑清单 (全量 YAML)
mop asset export > backup-topology.yaml