如何实现从CMDB表取值并展示在business service列

如何展示从CMDB列中获取的值
我希望左侧的business service列能够基于CMDB表返回对应的值,请问该如何实现这一需求?
| IP address | business service | business owner |
|---|---|---|
| 10.10.10.10 | SFTP Server | Khai |
| 10.10.10.20 | WAF | Julie |
| 10.90.40.200 | UCCS | Shairil |
| 192.168.10.11 | WorkSafe | Aditya |
实现方案
1. SQL关联查询(数据库场景)
如果业务表格和CMDB表都存储在关系型数据库中,用JOIN语句关联两张表即可自动匹配:
假设业务表为server_info,CMDB表为cmdb_service,关联字段是ip_address,执行以下查询:
SELECT si.ip_address, cs.business_service, si.business_owner FROM server_info si INNER JOIN cmdb_service cs ON si.ip_address = cs.ip_address;
查询结果直接渲染成表格,business service列就会自动填充CMDB中的对应值。
2. 配置管理平台内置关联(如ServiceNow)
如果使用ServiceNow这类专业CMDB工具:
- 找到业务表格的数据源配置,设置与CMDB业务服务表的关联规则,匹配字段选择
IP address - 将
business service列设置为引用字段,指向CMDB中的业务服务表 - 开启自动同步,系统会根据IP自动拉取并填充对应的业务服务名称
3. 自定义脚本填充(Python示例)
如果需要自行处理数据,用脚本关联CMDB数据:
# 模拟CMDB数据源 cmdb_service_map = { "10.10.10.10": "SFTP Server", "10.10.10.20": "WAF", "10.90.40.200": "UCCS", "192.168.10.11": "WorkSafe" } # 原始服务器数据 server_data = [ {"ip": "10.10.10.10", "owner": "Khai"}, {"ip": "10.10.10.20", "owner": "Julie"}, {"ip": "10.90.40.200", "owner": "Shairil"}, {"ip": "192.168.10.11", "owner": "Aditya"} ] # 匹配填充业务服务 for item in server_data: item["business_service"] = cmdb_service_map.get(item["ip"], "未知服务") # 输出格式化表格 import pandas as pd df = pd.DataFrame(server_data) print(df.to_markdown(index=False, columns=["ip", "business_service", "owner"]))
4. 前端页面动态填充(网页场景)
如果是网页端表格,通过API请求CMDB接口动态填充:
// 模拟调用CMDB接口获取业务服务 async function fetchBusinessService(ip) { const res = await fetch(`/cmdb/get-service?ip=${encodeURIComponent(ip)}`); const result = await res.json(); return result.service_name || "未知服务"; } // 遍历表格行填充数据 document.querySelectorAll(".s-table tbody tr").forEach(async row => { const ip = row.cells[0].textContent.trim(); const serviceCell = row.cells[1]; serviceCell.textContent = await fetchBusinessService(ip); });
内容的提问来源于stack exchange,提问作者Izzat Rashid
相关产品推荐
相关产品推荐

