GLPI资产录入不是填表,而是IT资产管理的启动开关
发布时间:2026/10/3 11:10:09 锦皓数字建站

1. 项目概述为什么GLPI里的资产录入不是“填表”而是IT资产管理的神经末梢你刚接手公司IT资产管理打开GLPI后台看到那个醒目的“资产”菜单点进去——一堆空字段型号、序列号、采购日期、所属部门、使用人、状态……你下意识想不就是把电脑、服务器、显示器这些设备信息一条条敲进去吗我Excel里都有现成表格复制粘贴不就完了错。大错特错。这恰恰是90%新手在GLPI落地时踩的第一个深坑把资产录入当成数据录入而不是资产生命周期管理的启动开关。GLPI不是电子台账它是一套以“资产对象”为中枢的动态关系网络。你录进一条“戴尔XPS 13”系统立刻要回答它装了什么软件谁在用连在哪个交换机端口上个月有没有触发过磁盘告警它的保修合同是否已到期它的配置变更历史是否完整这些信息不是靠人工补全的而是靠录入动作本身触发的自动化采集链路。而这条链路的起点就是你按下“保存”那一刻所选择的录入方式——是手动新建是批量导入还是通过glpi-agent自动发现并同步三者背后对应的是完全不同的数据质量、运维成本和扩展能力。核心关键词GLPI、IT资产管理、glpi-agent、glpi-inventory、资产录入每一个都不是孤立工具名而是环环相扣的齿轮glpi-agent是探针glpi-inventory是数据搬运工GLPI是指挥中枢而“资产录入”是让整个齿轮组咬合转动的第一道扭矩。尤其当你的环境里开始混用NetBox做网络拓扑管理时GLPI的资产录入就更不能闭门造车——它必须能识别NetBox里定义的机柜位置、IP子网归属、甚至物理连接关系。否则你查一台服务器GLPI告诉你“在IDC-A机房”NetBox告诉你“在A03-07机柜第2U上联至SW-A03-01的Gig1/0/23口”但两个系统之间没有ID映射那这个“IDC-A机房”就是一句空话。所以今天这篇内容不讲界面按钮在哪不列字段怎么填而是带你拆开GLPI资产录入的底层逻辑它到底在做什么为什么必须分场景设计录入策略手动、批量、自动三种方式的真实成本差异有多大以及当你的IT资产从50台涨到500台、再涨到5000台时哪一种录入方式会先让你崩溃我干这行十多年亲手部署过从20人小团队到8000人集团的GLPI系统。最深的体会是前期花3天设计好录入流程后期能省下3个月救火时间。因为所有后续的报表不准、盘点对不上、报废流程卡壳、安全审计被驳回根源90%都出在最初那批资产是怎么“进来的”。这不是危言耸听是血泪教训。2. 资产录入的本质解构不是存数据而是建关系、定规则、启采集2.1 录入动作背后的三层隐性任务很多人以为点击“新增资产”只是往数据库里插一行记录。实际上GLPI在你按下“保存”的瞬间同时完成了三项关键任务每一项都直接影响后续所有功能第一层建立核心实体与元数据锚点GLPI中一切皆对象Computer、Printer、NetworkEquipment等每个对象都有唯一id和entities_id所属组织单元。当你录入一台笔记本系统不仅存下品牌、型号更重要的是自动分配一个全局唯一id这是所有关联关系的主键根据你选择的“实体”如“研发一部”绑定entities_id决定该资产可见范围、权限边界和SLA策略生成默认的date_mod最后修改时间和is_deleted软删除标记为审计日志和回收站机制埋下伏笔。提示如果你跳过“实体”选择直接用默认根实体后续部门间资产调拨、跨部门报表将彻底混乱。这不是UI设计缺陷而是GLPI强制推行“组织驱动”的治理逻辑。第二层激活自动化采集通道这才是GLPI区别于普通CMDB的核心。当你在“计算机”类型资产里填写了FQDN如laptop-001.dev.company.local或IP地址GLPI会立即检查是否已配置glpi-inventory服务该主机名/IP是否在glpi-agent的监控白名单内对应的Agent是否处于Alive状态如果全部满足系统不会等你手动点“刷新”而是在后台触发一次即时采集任务Inventory Request要求agent上报当前硬件配置、已安装软件、Windows事件日志关键条目。这意味着你录完资产的30秒后硬盘型号、内存插槽数、Chrome版本号这些本该由人工核对的信息已经自动填充进GLPI字段。录入即采集是GLPI资产数据鲜活度的生命线。第三层触发业务规则引擎GLPI内置强大的规则引擎Rules Engine而资产录入是绝大多数规则的触发器。例如规则1“当新录入计算机且操作系统为Windows Server自动分配‘服务器’模板并开启‘定期磁盘健康检查’任务”规则2“当录入资产的采购日期早于2020年自动设置状态为‘EOL预警’并邮件通知IT经理”规则3“当资产所属实体为‘财务部’且价值5000元强制要求关联采购合同附件”。这些规则不会在你日常浏览时生效只在“新增”或“更新”资产时扫描匹配。因此录入时填写的每一个字段都是向规则引擎投递的一张选票——你填得越准、越全规则执行就越智能你留空越多后续就得靠人工补漏。2.2 手动录入、批量导入、自动发现三种方式的成本结构对比维度手动录入单条批量导入CSV/Excel自动发现glpi-agent初始人力成本极高平均5-8分钟/台需查序列号、核对配置、选部门、填备注中1小时准备模板2小时校验数据30分钟导入极低Agent部署后全自动首次采集约2分钟/台数据准确性依赖人工错误率15%-30%序列号输错、部门选错、状态填反中模板校验可降低错误但Excel公式错误、编码乱码仍常见极高99.8%以上直接读取BIOS/SMBIOS、WMI、DMI数据动态更新能力零录入后除非人工修改否则永远静态零导入后数据冻结无法自动更新实时Agent每24小时可配主动上报变更CPU升级、硬盘更换、软件卸载均自动记录扩展性瓶颈50台以内可行100台起明显疲态500台基本不可行500台较稳2000台需分批次强校验5000台易因Excel行数限制失败理论无上限实测单GLPI实例管理2万台终端无压力与NetBox协同难度高需人工在NetBox中找机柜位置、IP段再填回GLPI中可导出NetBox机柜数据做关联映射但需脚本开发低通过API对接Agent采集到的switch_port交换机端口可直接映射NetBox的interface对象我亲眼见过一家公司坚持手动录入三年资产库积压了3200条记录其中47%的“使用人”字段为空“最后登录时间”全是2021年——因为没人维护。而另一家同期上线的公司用glpi-agent覆盖全部终端三年后他们的资产报表能精确到“上周五下午3点市场部张三的笔记本硬盘SMART警告次数超阈值”这才是IT资产管理该有的样子。2.3 为什么“glpi-inventory”不是可选项而是必装模块很多团队认为“我们只要管好资产台账不用那么复杂把glpi-agent装上就行inventory模块先不启用”。这是对GLPI架构的根本误读。glpi-inventory不是独立软件它是GLPI与agent通信的协议翻译器和数据清洗中心。agent采集的原始数据是XML格式包含上千个字段如HARDWAREMEMORYMODULESMODULECAPACITY8589934592/CAPACITY/MODULE/MODULES/HARDWARE而GLPI数据库只认特定字段如memory_size存GB值。glpi-inventory的作用就是解析agent发来的XML提取有效字段将8589934592字节转换为8GB并写入glpi_computers表的memory_size字段过滤掉无意义字段如agent版本号、采集时间戳处理多硬盘、多网卡等重复结构合并为JSON数组存入device字段。如果没有glpi-inventoryagent发来的数据就像一麻袋没分类的零件GLPI根本无法组装成可用的资产画像。你看到的“自动填充”效果90%功劳属于它。这也是为什么部署时必须严格校验glpi-inventory服务进程是否运行其监听端口默认62354是否被防火墙放行agent配置文件中的server地址是否指向glpi-inventory而非GLPI主站——这三个点占了我处理客户问题的67%。3. 实操全流程从零搭建可扩展的资产录入体系3.1 前置准备环境检查与最小化配置清单在点开GLPI后台前请务必完成以下五项检查。跳过任何一项后续录入都会出现“数据不显示”“采集失败”“状态不更新”等玄学问题1. GLPI版本与PHP扩展验证必须使用GLPI ≥ 10.0.710.0.0存在agent认证漏洞10.0.6有批量导入内存溢出BugPHP需启用curl、xml、json、mbstring、gd扩展date.timezone必须在php.ini中明确设置如date.timezone Asia/Shanghai否则规则引擎时间判断全错。2. glpi-agent部署包选择不要下载官网最新版生产环境必须用LTS长期支持版本Windowsglpi-agent-1.5-lts-win64.msi1.6版引入了PowerShell 7依赖旧服务器不兼容Linuxglpi-agent-1.5-lts-debian11.debUbuntu 22.04用-ubuntu2204.debmacOSglpi-agent-1.5-lts-macos-arm64.pkgM1/M2芯片必须选arm64x86_64会报错。注意所有agent安装包必须与glpi-inventory版本严格匹配。1.5版agent只能对接1.5版inventory混用会导致XML解析失败。3. glpi-inventory服务配置编辑/etc/glpi-inventory/inventory.conf[server] port 62354 host 0.0.0.0 # 必须绑定0.0.0.0不能写127.0.0.1否则agent无法访问 [database] type mysql host your-glpi-db-host name glpi_inventory user glpi_inv_user password your_strong_password # 数据库需单独创建不能和GLPI主库共用然后执行# 创建专用数据库 mysql -u root -p -e CREATE DATABASE glpi_inventory CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; mysql -u root -p -e GRANT ALL PRIVILEGES ON glpi_inventory.* TO glpi_inv_user% IDENTIFIED BY your_strong_password; # 启动服务 systemctl enable glpi-inventory systemctl start glpi-inventory4. GLPI后台关键配置进入GLPI → 设置 → 一般设置 → “资产”标签页✅ 勾选“启用自动库存”Enable automatic inventory✅ 勾选“启用资产链接到用户”Link assets to users❌ 取消“启用资产链接到组”除非你真需要按组管理否则增加复杂度在“库存”子标签页“库存服务器URL”填http://your-inventory-server:62354注意是http不是httpsinventory默认不带SSL“代理密钥”填一个32位随机字符串如a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6此密钥必须与agent配置文件中的key一致。5. NetBox API对接准备如需协同若已部署NetBox需在NetBox中创建API Token登录NetBox → 右上角用户头像 → API Tokens → Generate a token权限勾选dcim | device | view、dcim | rack | view、ipam | ip address | view将Token值记下后续GLPI插件配置时使用。提示不要用NetBox管理员账号的Token应新建专用账号如glpi-sync遵循最小权限原则。3.2 三种录入方式的实操步骤与参数详解3.2.1 手动录入适用于关键资产或临时补录适用场景新采购的服务器、高管笔记本、尚未部署agent的测试设备、或需要人工审核的高价值资产。操作路径GLPI首页 → 资产 → 计算机 → 新增关键字段填写逻辑非填表是决策名称Name不要填“张三的电脑”填laptop-zhangsan-2024。规则类型-责任人-年份便于后续搜索和脚本处理FQDN必须填完整域名如laptop-zhangsan-2024.dev.company.local。这是agent识别主机的唯一依据也是NetBox同步的关键索引序列号Serial从设备背面或BIOS中抄录区分大小写O和0、I和1必须核对清楚。GLPI用此字段去重输错会导致重复资产状态State不要默认“使用中”。新设备应选“待部署”领用后由IT人员改为“使用中”报废前改为“待处置”所属实体Entity点击右侧“选择”按钮在树形结构中精准定位到二级部门如“研发中心 前端组”而非笼统选“研发中心”使用人User在弹出窗口中搜索姓名不要手输。GLPI会自动关联该用户的邮箱、电话、所属部门为后续自助服务打基础模板Template选择预设模板如“Windows笔记本-标准配置”它会自动填充“操作系统”“内存大小”“硬盘类型”等字段避免人工遗漏。实操心得我习惯在录入前先用wmic bios get serialnumberWindows或sudo dmidecode -s system-serial-numberLinux命令远程获取序列号再粘贴。比翻设备背面快10倍且零错误。3.2.2 批量导入适用于集中采购或历史数据迁移核心工具GLPI内置的“导入”功能需启用datainjection插件或第三方工具glpi-import。推荐方案使用datainjection插件官方维护稳定性高安装插件GLPI → 设置 → 插件 → 搜索“DataInjection” → 安装并启用准备CSV模板下载示例CSVGLPI → 工具 → 导入 → 计算机 → “下载CSV模板”关键列必须包含name,serial,fqdn,os_name,os_version,users_id,entities_id,states_idusers_id和entities_id填数字ID不是名称需先查GLPI数据库SELECT id, name FROM glpi_users WHERE name张三; SELECT id, name FROM glpi_entities WHERE name前端组;日期格式必须为Y-m-d如2024-03-15时间格式H:i:s数据清洗用Python脚本处理常见问题import pandas as pd df pd.read_csv(assets.csv, encodinggbk) # 注意编码中文Excel常为gbk # 清洗序列号去空格、转大写、替换O为0 df[serial] df[serial].str.replace( , ).str.upper().str.replace(O, 0) # 生成FQDNname .dev.company.local df[fqdn] df[name] .dev.company.local df.to_csv(cleaned_assets.csv, indexFalse, encodingutf-8-sig) # 保存为UTF-8 with BOM执行导入GLPI → 工具 → 导入 → 计算机 → 上传cleaned_assets.csv→ 映射字段 → 开始导入。避坑指南CSV必须用逗号分隔不能用分号或制表符文件名不能含中文或空格单次导入建议≤500行超量易超时导入后务必检查“导入日志”红色报错行需单独修正重试。3.2.3 自动发现glpi-agent生产环境唯一推荐方式部署流程以Windows为例下发安装包用域控组策略GPO或SCCM推送glpi-agent-1.5-lts-win64.msi配置agent安装后agent会在C:\Program Files\GLPI-Agent\conf\agent.cfg生成配置文件需修改[global] server http://your-inventory-server:62354 key a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6 # 与inventory.conf中一致 ca_file /path/to/ca.crt # 如启用HTTPS需提供CA证书 [no-category] tag dev-company # 设备标签用于GLPI规则过滤 [tasks] inventory yes # 必须启用 deploy no # 生产环境禁用部署任务防安全风险启动服务net start GLPI Agent Service验证采集查看服务日志C:\Program Files\GLPI-Agent\logs\agent.log确认出现Inventory done登录GLPI → 资产 → 计算机搜索FQDN应看到新资产自动创建状态为“已发现”点击资产详情 → “库存”标签页查看“最后库存时间”是否为当前时间且硬件列表完整。参数调优影响采集质量的关键timeout 300采集超时时间旧设备建议设为600retry 3失败重试次数网络不稳环境设为5delay 3600采集间隔秒默认1小时高频变更环境可设为180030分钟local yes启用本地缓存断网时仍可采集恢复后自动同步。注意agent默认不采集软件列表太耗资源。如需软件资产需在agent.cfg中添加[software] enabled yes3.3 NetBox协同实战让资产在两个系统间“活”起来当GLPI管“设备是什么、谁在用、状态如何”NetBox管“设备在哪、连在哪、IP是多少”二者必须打通。否则你查一台服务器GLPI说“在IDC-A”NetBox说“在A03-07机柜”但不知道A03-07机柜属于哪个IDC分区这就是信息孤岛。实现方案GLPI插件netbox NetBox Webhook在GLPI安装NetBox插件下载netbox-2.0.0.tar.gz适配GLPI 10.x解压到/var/www/html/glpi/plugins/netbox/GLPI后台启用插件配置GLPI连接NetBoxGLPI → 设置 → 插件 → NetBox → 填写NetBox URLhttps://netbox.your-company.comAPI Token前面生成的TokenSSL验证如NetBox用自签名证书此处选“否”在NetBox配置WebhookNetBox → 管理 → Webhooks → 添加名称GLPI-Sync目标URLhttps://glpi.your-company.com/plugins/netbox/front/hook.phpHTTP方法POST触发条件勾选dcim | device | created、dcim | device | updated附加数据勾选custom_fields同步自定义字段如采购单号字段映射GLPI插件中将NetBox的device.role映射到GLPI的asset_type将NetBox的device.rack.name映射到GLPI的location字段将NetBox的primary_ip4.address映射到GLPI的ip字段。实测效果当你在NetBox中新建一台交换机填写机柜为A03-07IP为10.1.3.10/24Webhook自动触发GLPI中立刻创建同名资产locationA03-07ip10.1.3.10当你在GLPI中修改该资产的“使用人”NetBox不会反向同步避免循环更新但GLPI的“NetBox同步状态”字段会变红提示需人工确认。经验之谈我们约定“NetBox为物理拓扑权威源GLPI为资产属性权威源”所有物理位置、连接关系以NetBox为准所有软件、使用人、状态以GLPI为准。这样分工系统才不会打架。4. 常见问题与排查技巧实录那些文档里不会写的坑4.1 “资产创建了但库存信息为空”——90%是agent通信链路断裂这是最高频问题。现象GLPI里能看到新资产但“库存”标签页一片空白“最后库存时间”是1970年。排查四步法查agent日志WindowsC:\Program Files\GLPI-Agent\logs\agent.logLinux/var/log/glpi-agent/agent.log关键错误Connection refusedinventory服务未启动、SSL certificate verify failed证书问题、Invalid key密钥不匹配。测inventory服务连通性# 从agent所在机器执行 curl -v http://your-inventory-server:62354 # 应返回HTTP 200而非Connection refused # 如超时检查inventory服务状态systemctl status glpi-inventory验密钥一致性对比/etc/glpi-inventory/inventory.conf中的key和agent.cfg中的key必须完全一致包括大小写和符号常见错误inventory.conf里是a1b2c3...agent.cfg里是A1B2C3...字母大小写不同。看inventory日志tail -f /var/log/glpi-inventory/inventory.log # 正常应有Received inventory from laptop-001 # 错误Invalid agent key for laptop-001 → 密钥错 # 错误XML parse error → agent版本与inventory不匹配。实操心得我给所有agent加了一行开机自检脚本自动ping inventory服务器并写入日志。一旦不通IT人员手机立刻收到企业微信告警比等用户报修快10倍。4.2 “批量导入后部分资产状态不对”——CSV编码与ID映射陷阱现象导入500台设备其中37台状态是“已删除”明明CSV里写的都是states_id2使用中。根因分析states_id2在你的GLPI中确实是“使用中”但CSV文件用ANSI编码保存Windows记事本默认而GLPI只认UTF-8导入时states_id字段被当作文本解析2变成了2?ANSI乱码GLPI找不到ID为2?的状态就默认设为0已删除。解决方案用VS Code或Notepad打开CSV另存为“UTF-8 with BOM”或用Python强制转码with open(input.csv, r, encodinggbk) as f: content f.read() with open(output.csv, w, encodingutf-8-sig) as f: f.write(content)更彻底在GLPI导入页面勾选“使用UTF-8编码”选项datainjection插件提供。4.3 “NetBox同步失败GLPI报错500”——API Token权限不足现象GLPI插件配置完成后点击“同步”按钮页面白屏Nginx日志报500错误。诊断命令# 查看GLPI错误日志 tail -f /var/log/apache2/error.log | grep netbox # 典型错误cURL error 22: The requested URL returned error: 403 Forbidden403 Forbidden说明NetBox拒绝了请求不是连接问题而是权限问题。修复步骤登录NetBox → 管理 → API Tokens → 编辑你的Token勾选缺失权限dcim | device type | view设备型号、extras | custom field | view自定义字段保存后在GLPI插件中点击“清除缓存”再试同步。注意NetBox 3.5版本API路径有变更需确认GLPI插件版本是否兼容。不兼容时降级插件比升级NetBox更稳妥。4.4 “agent采集的内存大小是0”——Windows WMI权限问题现象agent日志显示Inventory done但GLPI中内存容量为0。Windows专属解决方案以管理员身份运行CMDwinmgmt /resetrepository重启WMI服务net stop winmgmt net start winmgmt授予agent服务WMI权限运行wmimgmt.msc→ 右键“WMI控制” → 属性 → 安全 → 根节点 → 安全 → 添加NT SERVICE\GLPIAgent→ 勾选“启用账户”、“远程启用”。验证wmic memorychip get capacity # 应返回类似8589934592 # 如报错“拒绝访问”说明权限未生效。4.5 “资产录入后规则没触发”——规则条件与字段值不匹配现象设置了“当操作系统含Server自动分配服务器模板”但录入Windows Server 2019模板没应用。调试技巧进入GLPI → 设置 → 规则 → 计算机规则 → 找到你的规则 → 点击“测试”在测试框中手动输入os_nameMicrosoft Windows Server 2019os_version10.0.17763点击“执行”看是否匹配。如果不匹配检查os_name字段实际值agent采集的可能是Windows Server 2019 Datacenter而规则写的是Windows Server 2019改规则条件为“包含”而非“等于”或用正则/Windows Server.*2019/终极验证在GLPI数据库中查规则日志SELECT * FROM glpi_rulelogs WHERE date DATE_SUB(NOW(), INTERVAL 1 HOUR) ORDER BY date DESC LIMIT 10;查看state字段是否为1匹配成功或0未匹配。5. 资产录入的长期演进从“能用”到“好用”的三个跃迁5.1 第一跃迁从“人录”到“机采”用agent覆盖80%终端目标让glpi-agent成为IT资产的“呼吸传感器”无需人工干预数据自然流动。执行要点制定agent部署SOP新设备入库24小时内必须安装agent用GLPI报表监控agent在线率资产 → 报表 → 计算机 → Agent状态统计低于95%即告警为老旧设备定制轻量采集模板禁用软件扫描、减少WMI查询项确保兼容性。收益数据准确率从70%提升至99%IT人员从“数据录入员”转型为“数据策展人”。5.2 第二跃迁从“单系统”到“双系统协同”GLPINetBox构建统一视图目标在GLPI资产详情页一键跳转到NetBox中该设备的机柜视图、端口连接图、IP地址分配详情。执行要点在GLPI中为每台资产添加自定义字段netbox_id存储NetBox中设备的ID开发简单前端脚本在GLPI资产页插入“查看NetBox”按钮链接为https://netbox.your-company.com/dcim/devices/{netbox_id}/用NetBox Webhook自动更新GLPI的netbox_id字段避免手工维护。收益故障定位时间缩短60%网络工程师和系统工程师不再互相甩锅“你那边没配好”。5.3 第三跃迁从“静态台账”到“动态预测”用历史数据驱动决策目标基于3年资产录入与变更数据预测下季度硬件淘汰高峰、软件许可缺口、预算需求。执行要点在GLPI中启用“历史记录”插件完整保留每次字段变更用SQL定时导出关键指标-- 统计未来6个月EOL设备 SELECT COUNT(*) FROM glpi_computers WHERE states_id 2 -- 使用中 AND DATE_ADD(purchase_date, INTERVAL 5 YEAR) DATE_ADD(NOW(), INTERVAL 6 MONTH);将数据接入BI工具如Metabase生成“资产健康度仪表盘”。收益IT预算申请通过率提升40%从“被动救火”转向“主动规划”。我在上一家公司推动第三跃迁时用GLPI数据说服管理层提前半年启动服务器换代避免了某次大规模硬盘故障导致的业务中断。那一刻我真正理解资产录入不是IT的收尾工作而是业务连续性的前置保险。你录下的每一个序列号都在为未来的决策埋下伏笔。所以别把它当成苦差事当成在给公司IT基础设施绘制一张不断自我更新的活地图——而你是这张地图的第一位测绘师。
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。