GLPI+Fusioninventory实战:如何用Agent自动收集Windows和CentOS的软硬件清单?
GLPI+Fusioninventory企业级资产自动化管理实战指南
资产管理一直是企业IT运维中既基础又关键的一环。想象一下,当公司拥有数百台服务器和终端设备时,手动记录每台机器的CPU型号、内存大小、磁盘容量、安装的软件清单等信息,不仅耗时耗力,还容易出错。这正是GLPI结合Fusioninventory解决方案大显身手的地方——它能够自动、准确地收集这些资产信息,并集中展示在一个统一的平台上。
1. 企业资产管理自动化架构解析
GLPI作为开源的IT资产管理解决方案,其核心价值在于提供了一个集中管理IT资产的平台。而Fusioninventory则是其生态系统中最强大的资产自动发现和收集插件,两者结合形成了完整的资产自动化管理闭环。
1.1 核心组件工作原理
Fusioninventory Agent是运行在各个终端设备上的轻量级程序,它负责收集本机的硬件和软件信息。这些信息包括但不限于:
- 硬件信息:CPU型号、核心数、内存大小、磁盘型号和容量、网卡信息等
- 软件信息:已安装程序列表、版本号、安装日期等
- 网络信息:IP地址、MAC地址、开放端口等
收集到的数据会通过HTTP/HTTPS协议传输到GLPI服务器,经过处理后存储在数据库中。GLPI的Web界面则提供了直观的数据展示和查询功能。
1.2 数据流与处理流程
整个系统的数据流动可以分为以下几个阶段:
- 信息收集:Agent按照配置的策略收集本地信息
- 数据传输:加密后的数据通过HTTP/HTTPS发送到GLPI服务器
- 数据处理:GLPI服务器接收并解析数据,更新数据库
- 数据展示:管理员通过Web界面查看和分析资产信息
这种架构的优势在于:
- 自动化程度高:减少人工干预,降低出错概率
- 实时性强:可以配置定期更新,保持数据新鲜度
- 扩展性好:支持从几台到上万台设备的规模
2. Fusioninventory Agent部署实战
部署Fusioninventory Agent是实现自动化资产管理的第一步。根据操作系统的不同,部署方式也有所差异。
2.1 Windows系统部署
在Windows环境中部署Agent通常有以下几种方式:
- 手动安装:下载MSI安装包,图形化界面逐步安装
- 静默安装:使用命令行参数实现无人值守安装
- 批量部署:通过组策略或配置管理系统(如SCCM)大规模部署
以下是静默安装的示例命令:
msiexec /i fusioninventory-agent_windows-x64_2.6.msi /qn SERVER=http://glpi-server.example.com/plugins/fusioninventory/ TASK=inventory关键参数说明:
/qn:静默安装,不显示界面SERVER:指定GLPI服务器地址TASK:指定默认执行的任务类型
2.2 CentOS/RHEL系统部署
对于基于RPM的Linux发行版(如CentOS、RHEL),可以通过yum或dnf直接安装:
# 添加EPEL仓库(如果需要) sudo yum install epel-release # 安装Agent sudo yum install fusioninventory-agent fusioninventory-agent-task-inventory # 配置Agent sudo vi /etc/fusioninventory/agent.cfg在配置文件中,至少需要设置以下参数:
[server] url = http://glpi-server.example.com/plugins/fusioninventory/安装完成后,启动服务并设置为开机自启:
sudo systemctl enable --now fusioninventory-agent3. 高级配置与优化
基础安装完成后,还需要根据企业实际需求进行定制化配置,以充分发挥Fusioninventory的功能。
3.1 agent.cfg关键参数解析
Agent的核心配置文件是agent.cfg,它控制着Agent的各种行为。以下是一些常用且重要的配置项:
| 配置项 | 默认值 | 说明 |
|---|---|---|
| delaytime | 3600 | 两次完整清点之间的最小间隔(秒) |
| httpd-port | 62354 | Agent本地HTTP服务端口 |
| no-task | 0 | 是否禁止自动执行任务 |
| scan-homedirs | 0 | 是否扫描用户主目录 |
| scan-profiles | 0 | 是否扫描用户配置文件 |
对于大型部署,特别需要注意以下优化项:
# 减少网络带宽使用 compression = 1 # 设置代理服务器(如果需要) proxy = http://proxy.example.com:8080 # 限制CPU使用率 max-cpu-percent = 503.2 任务调度策略
Fusioninventory支持多种任务触发方式,各有优缺点:
定时任务:
- 优点:负载均衡,避免服务器高峰
- 缺点:数据更新不及时
- 配置示例:
execution-interval = 86400(每天执行一次)
服务器拉取:
- 优点:实时控制
- 缺点:增加服务器负担
- 配置示例:
no-task = 0
本地触发:
- 优点:即时响应
- 缺点:需要本地访问权限
- 执行命令:
fusioninventory-agent --local=/path/to/task.xml
在实际环境中,通常会组合使用这些策略。例如,配置基本的定时任务保证数据定期更新,同时在需要时通过服务器或本地触发即时更新。
4. 数据收集范围定制
默认情况下,Fusioninventory会收集大量信息,但有时我们需要根据实际需求调整收集范围。
4.1 硬件信息收集控制
通过配置可以控制收集哪些硬件信息:
[hardware] # 是否收集USB设备信息 usb = 1 # 是否收集打印机信息 printer = 0 # 是否收集显卡信息 video = 14.2 软件信息收集策略
软件收集是资产管理的重要部分,可以精细控制:
[software] # 扫描哪些目录下的软件 path = /usr,/opt # 忽略某些软件(支持正则表达式) blacklist = .*adobe.*,.*microsoft.*对于Windows系统,还可以控制是否收集特定注册表位置的软件信息。
4.3 自定义数据收集
除了预定义的信息类型,还可以收集自定义数据:
- 创建自定义模块脚本(如
/usr/share/fusioninventory/agent/custom/myinfo.pm) - 在配置中启用自定义模块:
[task] include = /usr/share/fusioninventory/agent/custom自定义模块可以用Perl编写,返回需要收集的额外信息。
5. 数据上报与GLPI集成
收集到的数据需要上报到GLPI服务器进行处理和展示。
5.1 通信安全配置
为保证数据传输安全,建议配置HTTPS和认证:
[server] url = https://glpi-server.example.com/plugins/fusioninventory/ user = inventory password = securepassword ssl-cert-file = /path/to/cert.pem5.2 GLPI端配置
在GLPI管理界面中,需要配置Fusioninventory插件以正确处理上报的数据:
- 进入"插件"→"Fusioninventory"→"配置"
- 设置自动清理旧数据的策略
- 配置资产信息映射规则
- 设置告警阈值(如磁盘空间不足)
5.3 数据查看与分析
在GLPI界面中,可以通过多种方式查看资产信息:
- 全局视图:所有设备的概览
- 单设备详情:特定设备的完整信息
- 自定义报表:按条件筛选和导出数据
GLPI还支持设置监控项,当某些指标超过阈值时自动触发告警。
6. 企业级部署最佳实践
在大规模生产环境中部署Fusioninventory需要考虑更多因素。
6.1 性能优化建议
当设备数量超过100台时,建议:
- 使用MySQL而不是SQLite作为GLPI后端数据库
- 为GLPI服务器配置足够的RAM(至少8GB)
- 使用负载均衡部署多个Fusioninventory处理节点
- 错开Agent的上报时间,避免高峰
6.2 高可用架构
对于关键业务环境,可以考虑:
- 数据库集群:MySQL主从复制或Galera集群
- 应用层冗余:多个GLPI前端节点
- 存储分离:将上传的文件存储在共享存储或对象存储中
6.3 备份与恢复策略
定期备份以下内容:
- GLPI数据库
/var/lib/glpi目录/etc/glpi目录- Fusioninventory插件配置
可以使用以下命令创建数据库备份:
mysqldump -u glpi_user -p glpi_db > glpi_backup_$(date +%Y%m%d).sql7. 常见问题排查
即使配置正确,在实际运行中仍可能遇到各种问题。
7.1 Agent无法连接服务器
检查步骤:
- 验证网络连通性:
ping glpi-server.example.com - 检查端口开放:
telnet glpi-server.example.com 80 - 查看Agent日志:
/var/log/fusioninventory-agent.log
7.2 数据不完整或缺失
可能原因:
- 收集任务配置不正确
- 权限不足导致某些信息无法收集
- 过滤规则过于严格
检查Agent配置文件和日志,确认没有错误信息。
7.3 性能问题
如果Agent占用过多系统资源:
- 限制收集频率:增加
delaytime - 减少收集范围:关闭不必要的收集项
- 限制资源使用:设置
max-cpu-percent和max-memory
8. 进阶应用场景
除了基本的资产管理,GLPI+Fusioninventory还可以支持更多高级应用。
8.1 软件许可证管理
通过收集的软件信息,可以:
- 跟踪已安装软件及其版本
- 比对采购记录,发现未经授权的软件
- 统计软件使用情况,优化许可证采购
8.2 变更追踪与合规审计
定期收集的信息可以用于:
- 检测未经授权的硬件变更
- 发现安全策略违规(如安装了禁止的软件)
- 满足合规审计要求
8.3 与其他系统集成
GLPI支持通过API与其他系统集成:
- 与CMDB系统同步数据
- 与监控系统联动,自动创建工单
- 与采购系统对接,实现资产全生命周期管理
集成示例代码(Python):
import requests import json url = "https://glpi-server.example.com/apirest.php/Computer/" headers = { "Content-Type": "application/json", "Session-Token": "your_session_token", "App-Token": "your_app_token" } response = requests.get(url, headers=headers) computers = json.loads(response.text) for computer in computers: print(f"ID: {computer['id']}, Name: {computer['name']}")9. 安全注意事项
在部署和使用过程中,必须重视安全性。
9.1 通信安全
- 强制使用HTTPS而非HTTP
- 定期更新SSL证书
- 考虑使用VPN或专用网络进行数据传输
9.2 访问控制
- 为GLPI配置强密码策略
- 实施基于角色的访问控制(RBAC)
- 定期审计用户权限
9.3 数据保护
- 敏感信息加密存储
- 遵守数据隐私法规
- 制定明确的数据保留策略
10. 未来发展与替代方案
虽然GLPI+Fusioninventory是成熟的解决方案,但也需要关注技术发展。
10.1 容器化部署
新的趋势是将GLPI和Fusioninventory容器化:
FROM glpi-project/glpi:10.0.3 # 安装Fusioninventory插件 RUN wget https://github.com/fusioninventory/fusioninventory-for-glpi/releases/download/glpi10.0.3%2B1.0/fusioninventory-10.0.3+1.0.tar.bz2 && \ tar -jxvf fusioninventory-10.0.3+1.0.tar.bz2 -C /var/www/html/glpi/plugins/10.2 替代方案比较
除了GLPI+Fusioninventory,还有其他资产管理方案:
| 方案 | 优点 | 缺点 |
|---|---|---|
| Snipe-IT | 界面现代,易用性好 | 功能相对简单 |
| Lansweeper | 扫描速度快,报表丰富 | 商业软件,成本高 |
| OCS Inventory | 开源,跨平台支持好 | 配置复杂 |
选择方案时需要综合考虑功能需求、技术能力和预算。
