AdminSet API接口完整参考:二次开发与集成指南
AdminSet作为一款功能强大的自动化运维平台,提供了丰富的API接口支持二次开发和系统集成。本文将详细介绍AdminSet的核心API接口,帮助开发者快速掌握平台集成技巧,实现自定义运维自动化解决方案。无论是资产管理系统对接、监控数据采集,还是持续交付流程整合,AdminSet API都能满足企业级运维需求。## 📊 AdminSet API架构概览AdminSet采用模块化API设
AdminSet API接口完整参考:二次开发与集成指南
AdminSet作为一款功能强大的自动化运维平台,提供了丰富的API接口支持二次开发和系统集成。本文将详细介绍AdminSet的核心API接口,帮助开发者快速掌握平台集成技巧,实现自定义运维自动化解决方案。无论是资产管理系统对接、监控数据采集,还是持续交付流程整合,AdminSet API都能满足企业级运维需求。
📊 AdminSet API架构概览
AdminSet采用模块化API设计,每个功能模块都提供相应的API接口。主要API模块包括:
- 资产管理API:位于cmdb/api.py,提供资产采集、查询和管理接口
- 监控数据API:位于monitor/api.py,处理系统监控数据接收和查询
- 持续交付API:位于delivery/urls.py,支持部署任务管理和执行
- 配置管理API:集成在系统配置模块中
🔑 API认证与安全机制
AdminSet API采用Token认证机制,确保接口访问安全。所有API请求都需要在请求头中包含有效的Token:
# Token验证装饰器示例
@token_verify()
def get_host(request):
# API逻辑
Token配置可在Web界面的系统配置中自定义,客户端脚本install/client/adminset_agent.py中需要配置相同的Token才能正常调用API。
🏗️ 资产管理API详解
1. 资产数据采集接口
API端点: /cmdb/collect 方法: POST 功能: 接收客户端上报的资产信息
# 请求示例
{
"vendor": "Dell",
"disk": "500GB",
"cpu_model": "Intel Xeon",
"cpu_num": 8,
"memory": 16384,
"sn": "ABC123456",
"osver": "CentOS 7.6",
"hostname": "web-server-01",
"ip": "192.168.1.100"
}
该接口用于自动化资产发现,支持批量设备信息上报。客户端通过此接口将硬件配置、系统信息同步到AdminSet平台。
2. 主机信息查询接口
API端点: /cmdb/gethost/ 方法: GET 参数: name (主机名或"all")
功能:
- 查询单个主机信息:
GET /cmdb/gethost/?name=web-server-01 - 查询所有主机信息:
GET /cmdb/gethost/?name=all
返回数据格式:
{
"status": 0,
"message": "ok",
"data": {
"hostname": "web-server-01",
"ip": "192.168.1.100"
}
}
3. 主机组查询接口
API端点: /cmdb/getgroup/ 方法: GET 参数: name (组名或"all")
功能: 查询主机组及其成员信息,支持自动化分组管理。
📈 监控数据API集成
1. 监控数据接收接口
API端点: /monitor/received/sys/info/ 方法: POST 功能: 接收系统监控指标数据
# 监控数据上报示例
{
"hostname": "web-server-01",
"cpu_usage": 45.2,
"memory_usage": 78.5,
"disk_usage": 65.3,
"network_in": 1250000,
"network_out": 890000,
"timestamp": 1647849600
}
2. 监控数据查询接口
AdminSet提供多种监控数据查询接口:
- CPU使用率:
/monitor/getcpu/{hostname}/{timing}/ - 内存使用率:
/monitor/getmem/{hostname}/{timing}/ - 磁盘使用率:
/monitor/getdisk/{hostname}/{timing}/{partition}/ - 网络流量:
/monitor/getnet/{hostname}/{timing}/{net_id}/
参数说明:
hostname: 主机名timing: 时间范围(秒)partition: 磁盘分区编号net_id: 网络接口ID
🚀 持续交付API应用
1. 部署任务管理
持续交付模块提供完整的部署流程API:
- 任务创建:
/delivery/deliadd/ - 任务列表:
/delivery/delilist/ - 任务状态:
/delivery/delistatus/{project_id}/ - 任务编辑:
/delivery/deliedit/{project_id}/ - 任务执行:
/delivery/delideploy/{project_id}/
2. 日志管理接口
- 部署日志:
/delivery/delilog/{project_id}/ - 历史日志:
/delivery/delilogshistory/{project_id}/ - 日志下载:
/delivery/deligetlogs/{project_id}/{logname}/
🔧 二次开发实战指南
1. 自定义资产采集脚本
基于AdminSet API,您可以编写自定义的资产采集脚本:
import requests
import json
import platform
import psutil
# AdminSet服务器配置
ADMINSET_URL = "http://your-adminset-server"
API_TOKEN = "your_api_token"
def collect_asset_info():
"""采集本地主机资产信息"""
asset_data = {
"vendor": get_vendor(),
"disk": get_disk_info(),
"cpu_model": platform.processor(),
"cpu_num": psutil.cpu_count(),
"memory": psutil.virtual_memory().total // (1024**2), # MB
"sn": get_serial_number(),
"osver": platform.platform(),
"hostname": platform.node(),
"ip": get_local_ip()
}
# 调用AdminSet API
headers = {"Authorization": f"Token {API_TOKEN}"}
response = requests.post(
f"{ADMINSET_URL}/cmdb/collect",
json=asset_data,
headers=headers
)
return response.json()
2. 集成第三方监控系统
将Zabbix、Prometheus等监控系统数据同步到AdminSet:
def sync_monitoring_data(hostname, metrics):
"""同步监控数据到AdminSet"""
monitoring_data = {
"hostname": hostname,
"timestamp": int(time.time()),
**metrics # 包含CPU、内存、磁盘等指标
}
response = requests.post(
f"{ADMINSET_URL}/monitor/received/sys/info/",
json=monitoring_data,
headers={"Authorization": f"Token {API_TOKEN}"}
)
return response.status_code == 200
📋 API最佳实践
1. 错误处理与重试机制
import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
def create_session_with_retry():
"""创建带重试机制的HTTP会话"""
session = requests.Session()
retry_strategy = Retry(
total=3,
backoff_factor=1,
status_forcelist=[429, 500, 502, 503, 504]
)
adapter = HTTPAdapter(max_retries=retry_strategy)
session.mount("http://", adapter)
session.mount("https://", adapter)
return session
2. 批量操作优化
对于大量资产数据,建议采用分批处理:
def batch_asset_update(assets, batch_size=50):
"""批量更新资产信息"""
session = create_session_with_retry()
for i in range(0, len(assets), batch_size):
batch = assets[i:i+batch_size]
# 批量处理逻辑
# ...
🎯 高级集成场景
1. 与CI/CD流水线集成
将AdminSet API集成到Jenkins、GitLab CI等CI/CD工具中:
# GitLab CI示例
deploy_to_adminset:
stage: deploy
script:
- |
curl -X POST "${ADMINSET_URL}/delivery/delideploy/${PROJECT_ID}/" \
-H "Authorization: Token ${ADMINSET_TOKEN}" \
-H "Content-Type: application/json" \
-d '{"version": "${CI_COMMIT_SHA}", "environment": "production"}'
2. 自动化巡检报告
结合AdminSet API生成自动化巡检报告:
def generate_inspection_report():
"""生成系统巡检报告"""
# 获取所有主机信息
hosts = get_all_hosts()
report = {
"timestamp": datetime.now().isoformat(),
"total_hosts": len(hosts),
"hosts_status": [],
"resource_usage": get_resource_summary()
}
for host in hosts:
host_status = check_host_status(host)
report["hosts_status"].append(host_status)
return report
🔍 故障排查与调试
常见问题解决
-
Token认证失败
- 检查Token配置是否正确
- 确认Token在Web界面中已启用
- 验证请求头格式:
Authorization: Token your_token
-
API响应超时
- 检查网络连通性
- 确认AdminSet服务正常运行
- 调整请求超时设置
-
数据格式错误
- 验证JSON数据格式
- 检查必填字段是否完整
- 查看API日志获取详细错误信息
📚 扩展资源
-
官方文档: docs/Manual.md - 详细的使用手册和配置指南
-
API源码参考:
- cmdb/api.py - 资产管理API实现
- monitor/api.py - 监控数据API实现
- delivery/urls.py - 持续交付API路由
-
客户端示例: install/client/adminset_agent.py - 官方客户端实现参考
通过AdminSet API,您可以构建强大的自动化运维体系,实现资产自动发现、监控数据集中管理、部署流程自动化等高级功能。无论是小型团队还是大型企业,AdminSet的API接口都能提供灵活可靠的集成方案,助力运维效率提升。
立即开始您的AdminSet API集成之旅,打造专属的智能运维平台! 🚀
更多推荐




所有评论(0)