企业IT资产管理革命基于Rocky Linux 9.3的OCSInventory-NG实战指南当IT设备数量突破50台时Excel表格的局限性就会暴露无遗——版本混乱、数据冲突、权限失控。某中型企业的运维主管曾向我展示过他们精心维护的资产表17个不同版本的Excel文件分散在各部门共享盘中最新的更新时间戳显示为半年前。这正是传统资产管理方式面临的典型困境。OCSInventory-NG作为开源的网络资产清点系统其价值不仅在于自动化采集硬件信息更构建了一个动态更新的数字资产图谱。最新统计显示采用专业IT资产管理工具的企业其硬件利用率平均提升23%软件合规风险降低67%。本文将演示如何在Rocky Linux 9.3这一企业级平台上从零构建完整的资产管理系统。1. 环境准备与基础服务部署1.1 系统初始化配置Rocky Linux 9.3作为RHEL的兼容分支其稳定性已通过大量企业环境验证。部署前建议执行以下系统优化# 更新系统并安装基础工具 sudo dnf update -y sudo dnf install -y epel-release vim wget curl # 关闭不必要的防火墙端口后续会针对性开放 sudo firewall-cmd --permanent --remove-service{ssh,dhcpv6-client} sudo firewall-cmd --reload关键配置参数对比配置项推荐值默认值SELinuxenforcingenforcing交换分区物理内存的1.5倍自动分配文件系统XFSXFS时区亚洲/上海UTC提示生产环境建议单独划分/var分区用于存放数据库和库存数据容量不小于50GB1.2 MariaDB数据库部署OCSInventory-NG支持多种数据库但MariaDB在Linux环境下表现最优。以下是优化过的安装流程# 安装MariaDB 10.6Rocky Linux 9默认仓库版本 sudo dnf install -y mariadb-server mariadb-backup # 安全初始化交互式操作 sudo mysql_secure_installation数据库配置文件中需要调整的关键参数[mysqld] innodb_buffer_pool_size 1G # 建议物理内存的50-70% innodb_log_file_size 256M # 大型事务处理更高效 max_connections 200 # 根据客户端数量调整 character-set-server utf8mb4 # 完整支持Unicode collation-server utf8mb4_unicode_ci2. OCSInventory-NG服务端安装2.1 核心组件安装通过官方仓库安装能确保组件兼容性# 添加OCSInventory官方仓库 sudo curl -o /etc/yum.repos.d/ocsinventory.repo \ https://download.ocsinventory-ng.org/ocsinventory/Rocky_9/ocsinventory.repo # 安装主服务包 sudo dnf install -y ocsinventory-server安装过程中需要特别注意的依赖项Perl模块至少需要5.16版本Apache版本建议2.4.x系列PHP组件必须包含gd、mysqli、zlib扩展2.2 Web控制台配置Apache虚拟主机配置示例/etc/httpd/conf.d/ocsinventory.confVirtualHost *:80 ServerName inventory.example.com DocumentRoot /usr/share/ocsinventory-reports/ocsreports Directory /usr/share/ocsinventory-reports/ocsreports Require all granted Options FollowSymLinks DirectoryIndex index.php IfModule mod_php.c php_flag engine on php_value session.auto_start 0 /IfModule /Directory ErrorLog /var/log/httpd/ocs_error.log CustomLog /var/log/httpd/ocs_access.log combined /VirtualHost首次登录后应立即修改的默认配置在Administration Configuration中更改admin密码设置Server Communication中的压缩级别建议zlib级别6配置Server Proxy中的代理设置如有需要3. 客户端部署实战3.1 Windows客户端部署Windows代理程序提供MSI和EXE两种安装包。对于域环境推荐使用组策略部署# 静默安装参数示例 msiexec /i Ocsinventory-Windows-Agent-2.12.0.msi /qn SERVERhttp://ocsserver/ocsinventory注册表关键配置项HKEY_LOCAL_MACHINE\SOFTWARE\OCSInventoryNG\Agent - SERVER - TAG - PROLOG_FREQ - SSL3.2 Linux客户端配置对于RPM系发行版推荐使用仓库安装# 添加仓库并安装 sudo curl -o /etc/yum.repos.d/ocsinventory-agent.repo \ https://download.ocsinventory-ng.org/ocsinventory/Rocky_9/ocsinventory-agent.repo sudo dnf install -y ocsinventory-agent配置文件/etc/ocsinventory/ocsinventory-agent.cfg示例[server] baseurl http://ocsserver/ocsinventory user agent password secure_password ca-cert /path/to/ca.pem [options] backend-dir /var/lib/ocsinventory-agent logfile /var/log/ocsinventory-agent.log lazy 14. 高级功能与运维技巧4.1 资产自动分组策略通过Administration Groups可以创建动态分组规则硬件条件分组内存≥16GB的机器自动归入高性能设备组软件条件分组安装特定软件的设备归入设计部门组网络条件分组特定IP段的设备归入分支机构组-- 示例创建图形工作站分组 INSERT INTO groups (name,rule) VALUES ( Graphic Workstations, GPU LIKE %NVIDIA% AND MEMORY 32768 );4.2 软件合规审计在Administration Software中可设置黑白名单创建禁止软件策略匹配规则name LIKE %TeamViewer%告警级别高危设置必须软件策略匹配规则name CrowdStrike检查频率每天合规报表关键指标指标名称计算公式健康阈值软件合规率合规设备数/总设备数×100%≥95%漏洞修复时效补丁安装平均延迟(天)≤3授权超配率超额授权数/总授权数×100%≤5%4.3 故障排查指南常见问题与解决方案客户端无法连接检查/var/log/ocsinventory-agent.log中的错误信息验证网络连通性telnet ocsserver 80检查服务端Apache日志tail -f /var/log/httpd/ssl_error_log数据采集不全确认客户端有足够权限Windows需管理员权限检查Perl模块是否完整perl -MNet::SNMP -e print 1增加调试级别ocsinventory-agent --debugWeb界面加载缓慢优化MySQL查询缓存启用Apache的mod_deflate清理历史数据mysqlcheck -o ocsweb# 数据库维护脚本示例 #!/bin/bash DB_USERocs DB_PASSpassword DB_NAMEocsweb mysqlcheck -u$DB_USER -p$DB_PASS --optimize $DB_NAME mysql -u$DB_USER -p$DB_PASS $DB_NAME -e DELETE FROM hardware WHERE lastdate DATE_SUB(NOW(), INTERVAL 1 YEAR)5. 系统集成与自动化5.1 REST API开发接口OCSInventory提供完整的API支持以下是通过Python调用API的示例import requests from base64 import b64encode auth b64encode(badmin:admin_password).decode(utf-8) headers {Authorization: fBasic {auth}} # 获取所有设备列表 response requests.get( http://ocsserver/ocsapi/v1/computers/list, headersheaders, params{start: 0, limit: 100} ) # 创建新的资产标签 payload { TAG: Finance-Department, DESCRIPTION: 财务部专用设备 } requests.post(http://ocsserver/ocsapi/v1/tags, jsonpayload, headersheaders)5.2 与监控系统集成通过Nagios插件实现资产健康监控#!/bin/bash # check_ocs_agent.sh COUNT$(mysql -N -uocs -ppassword ocsweb -e \ SELECT COUNT(*) FROM hardware WHERE lastdate DATE_SUB(NOW(), INTERVAL 2 DAY)) if [ $COUNT -gt 5 ]; then echo CRITICAL: $COUNT devices not reporting exit 2 elif [ $COUNT -gt 0 ]; then echo WARNING: $COUNT devices not reporting exit 1 else echo OK: All devices reporting exit 0 fi将此脚本放入Nagios的plugins目录并在commands.cfg中添加define command { command_name check_ocs_agents command_line $USER1$/check_ocs_agent.sh }5.3 自动化运维场景典型工作流示例自动发现新设备 → 2. 根据规则分类 → 3. 部署必要软件 → 4. 加入监控系统# 自动化部署示例 def onboard_new_device(mac_address): device get_device_info(mac_address) if device[os] Windows: deploy_windows_agent(device[ip]) if device[department] HR: install_software(device[ip], HR_Suite) add_to_monitoring(device[hostname]) update_cmdb(device)6. 安全加固实践6.1 通信加密配置启用HTTPS是基本要求以下是使用Lets Encrypt的示例# 安装certbot sudo dnf install -y certbot python3-certbot-apache # 获取证书需提前配置DNS解析 sudo certbot --apache -d inventory.example.com # 设置自动续期 echo 0 3 * * * root /usr/bin/certbot renew --quiet | sudo tee /etc/cron.d/certbot-renew6.2 数据库安全建议实施的MySQL安全措施创建专用用户并限制权限CREATE USER ocs_weblocalhost IDENTIFIED BY complex_password; GRANT SELECT,INSERT,UPDATE ON ocsweb.* TO ocs_weblocalhost;启用审计插件[mysqld] plugin-load-add server_audit.so server_audit_logging ON server_audit_events QUERY_DDL,QUERY_DCL6.3 访问控制策略推荐的角色权限划分角色权限范围操作限制管理员全系统无部门IT所属部门设备不能删除设备记录审计员只读权限仅查看和导出报表帮助台设备基本信息仅查看联系人信息在Administration Profiles中可以通过勾选精确控制每个角色的权限硬件查看/编辑/删除软件查看/管理许可网络查看MAC/IP管理用户/组管理7. 性能优化与扩展7.1 大规模部署架构当设备超过1000台时建议采用分布式架构----------------- | 负载均衡器 | ---------------- | --------------------------------- | | | ----------------- -------------- -------------- | 主数据库服务器 | | 报表服务器 | | 采集服务器 | | (MariaDB Galera) | | (Read Replica)| | (专用Apache) | ------------------ --------------- --------------组件分工主数据库处理所有写操作报表服务器处理Web界面查询采集服务器专用接收客户端数据7.2 数据库分表策略对于超大型部署可以考虑按部门或地区分表-- 创建按部门分区的硬件表 CREATE TABLE hardware_finance LIKE hardware; CREATE TABLE hardware_hr LIKE hardware; -- 使用视图统一查询 CREATE VIEW v_all_hardware AS SELECT * FROM hardware_finance UNION ALL SELECT * FROM hardware_hr UNION ALL ...7.3 缓存优化配置调整Apache和PHP缓存设置/etc/php.iniopcache.enable1 opcache.memory_consumption128 opcache.max_accelerated_files4000 opcache.revalidate_freq60 realpath_cache_size4096K realpath_cache_ttl600对应的Apache配置/etc/httpd/conf.d/00_cache.confIfModule mod_expires.c ExpiresActive On ExpiresByType text/css access plus 1 week ExpiresByType application/javascript access plus 1 month ExpiresByType image/svgxml access plus 1 year /IfModule8. 备份与灾难恢复8.1 完整备份方案推荐的三层备份策略数据库每日全备#!/bin/bash BACKUP_DIR/backups/mysql DATE$(date %Y%m%d) mysqldump -uocs -ppassword --single-transaction --routines \ --triggers --all-databases | gzip $BACKUP_DIR/full_$DATE.sql.gz # 保留最近7天 find $BACKUP_DIR -name *.sql.gz -mtime 7 -delete配置文件版本控制sudo yum install -y git sudo mkdir /etc/ocsinventory-backup sudo git init /etc/ocsinventory-backup sudo cp -a /etc/ocsinventory /etc/ocsinventory-backup/ sudo git -C /etc/ocsinventory-backup add . sudo git -C /etc/ocsinventory-backup commit -m Daily config backup整机镜像备份# 使用BorgBackup进行增量备份 borg create /backups/borg::{now} /etc /var/lib/ocsdb /usr/share/ocsinventory8.2 恢复演练流程定期测试的恢复步骤在新服务器安装相同版本的Rocky Linux恢复MariaDB数据库zcat full_backup.sql.gz | mysql -u root -p复制配置文件scp -r backupuserbackupserver:/etc/ocsinventory-backup /etc/重新安装OCSInventory软件包验证Web界面和客户端连接8.3 高可用配置使用Keepalived实现VIP故障转移# 主服务器配置/etc/keepalived/keepalived.conf vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 42 } virtual_ipaddress { 192.168.1.100/24 } }对应的从服务器只需修改state BACKUP和priority 90。测试故障转移# 在主服务器模拟故障 sudo systemctl stop keepalived # 在从服务器检查VIP接管 ip addr show eth0 | grep 192.168.1.100
告别Excel表格!手把手教你用OCSInventory-NG在Rocky Linux 9.3上搭建企业IT资产库
企业IT资产管理革命基于Rocky Linux 9.3的OCSInventory-NG实战指南当IT设备数量突破50台时Excel表格的局限性就会暴露无遗——版本混乱、数据冲突、权限失控。某中型企业的运维主管曾向我展示过他们精心维护的资产表17个不同版本的Excel文件分散在各部门共享盘中最新的更新时间戳显示为半年前。这正是传统资产管理方式面临的典型困境。OCSInventory-NG作为开源的网络资产清点系统其价值不仅在于自动化采集硬件信息更构建了一个动态更新的数字资产图谱。最新统计显示采用专业IT资产管理工具的企业其硬件利用率平均提升23%软件合规风险降低67%。本文将演示如何在Rocky Linux 9.3这一企业级平台上从零构建完整的资产管理系统。1. 环境准备与基础服务部署1.1 系统初始化配置Rocky Linux 9.3作为RHEL的兼容分支其稳定性已通过大量企业环境验证。部署前建议执行以下系统优化# 更新系统并安装基础工具 sudo dnf update -y sudo dnf install -y epel-release vim wget curl # 关闭不必要的防火墙端口后续会针对性开放 sudo firewall-cmd --permanent --remove-service{ssh,dhcpv6-client} sudo firewall-cmd --reload关键配置参数对比配置项推荐值默认值SELinuxenforcingenforcing交换分区物理内存的1.5倍自动分配文件系统XFSXFS时区亚洲/上海UTC提示生产环境建议单独划分/var分区用于存放数据库和库存数据容量不小于50GB1.2 MariaDB数据库部署OCSInventory-NG支持多种数据库但MariaDB在Linux环境下表现最优。以下是优化过的安装流程# 安装MariaDB 10.6Rocky Linux 9默认仓库版本 sudo dnf install -y mariadb-server mariadb-backup # 安全初始化交互式操作 sudo mysql_secure_installation数据库配置文件中需要调整的关键参数[mysqld] innodb_buffer_pool_size 1G # 建议物理内存的50-70% innodb_log_file_size 256M # 大型事务处理更高效 max_connections 200 # 根据客户端数量调整 character-set-server utf8mb4 # 完整支持Unicode collation-server utf8mb4_unicode_ci2. OCSInventory-NG服务端安装2.1 核心组件安装通过官方仓库安装能确保组件兼容性# 添加OCSInventory官方仓库 sudo curl -o /etc/yum.repos.d/ocsinventory.repo \ https://download.ocsinventory-ng.org/ocsinventory/Rocky_9/ocsinventory.repo # 安装主服务包 sudo dnf install -y ocsinventory-server安装过程中需要特别注意的依赖项Perl模块至少需要5.16版本Apache版本建议2.4.x系列PHP组件必须包含gd、mysqli、zlib扩展2.2 Web控制台配置Apache虚拟主机配置示例/etc/httpd/conf.d/ocsinventory.confVirtualHost *:80 ServerName inventory.example.com DocumentRoot /usr/share/ocsinventory-reports/ocsreports Directory /usr/share/ocsinventory-reports/ocsreports Require all granted Options FollowSymLinks DirectoryIndex index.php IfModule mod_php.c php_flag engine on php_value session.auto_start 0 /IfModule /Directory ErrorLog /var/log/httpd/ocs_error.log CustomLog /var/log/httpd/ocs_access.log combined /VirtualHost首次登录后应立即修改的默认配置在Administration Configuration中更改admin密码设置Server Communication中的压缩级别建议zlib级别6配置Server Proxy中的代理设置如有需要3. 客户端部署实战3.1 Windows客户端部署Windows代理程序提供MSI和EXE两种安装包。对于域环境推荐使用组策略部署# 静默安装参数示例 msiexec /i Ocsinventory-Windows-Agent-2.12.0.msi /qn SERVERhttp://ocsserver/ocsinventory注册表关键配置项HKEY_LOCAL_MACHINE\SOFTWARE\OCSInventoryNG\Agent - SERVER - TAG - PROLOG_FREQ - SSL3.2 Linux客户端配置对于RPM系发行版推荐使用仓库安装# 添加仓库并安装 sudo curl -o /etc/yum.repos.d/ocsinventory-agent.repo \ https://download.ocsinventory-ng.org/ocsinventory/Rocky_9/ocsinventory-agent.repo sudo dnf install -y ocsinventory-agent配置文件/etc/ocsinventory/ocsinventory-agent.cfg示例[server] baseurl http://ocsserver/ocsinventory user agent password secure_password ca-cert /path/to/ca.pem [options] backend-dir /var/lib/ocsinventory-agent logfile /var/log/ocsinventory-agent.log lazy 14. 高级功能与运维技巧4.1 资产自动分组策略通过Administration Groups可以创建动态分组规则硬件条件分组内存≥16GB的机器自动归入高性能设备组软件条件分组安装特定软件的设备归入设计部门组网络条件分组特定IP段的设备归入分支机构组-- 示例创建图形工作站分组 INSERT INTO groups (name,rule) VALUES ( Graphic Workstations, GPU LIKE %NVIDIA% AND MEMORY 32768 );4.2 软件合规审计在Administration Software中可设置黑白名单创建禁止软件策略匹配规则name LIKE %TeamViewer%告警级别高危设置必须软件策略匹配规则name CrowdStrike检查频率每天合规报表关键指标指标名称计算公式健康阈值软件合规率合规设备数/总设备数×100%≥95%漏洞修复时效补丁安装平均延迟(天)≤3授权超配率超额授权数/总授权数×100%≤5%4.3 故障排查指南常见问题与解决方案客户端无法连接检查/var/log/ocsinventory-agent.log中的错误信息验证网络连通性telnet ocsserver 80检查服务端Apache日志tail -f /var/log/httpd/ssl_error_log数据采集不全确认客户端有足够权限Windows需管理员权限检查Perl模块是否完整perl -MNet::SNMP -e print 1增加调试级别ocsinventory-agent --debugWeb界面加载缓慢优化MySQL查询缓存启用Apache的mod_deflate清理历史数据mysqlcheck -o ocsweb# 数据库维护脚本示例 #!/bin/bash DB_USERocs DB_PASSpassword DB_NAMEocsweb mysqlcheck -u$DB_USER -p$DB_PASS --optimize $DB_NAME mysql -u$DB_USER -p$DB_PASS $DB_NAME -e DELETE FROM hardware WHERE lastdate DATE_SUB(NOW(), INTERVAL 1 YEAR)5. 系统集成与自动化5.1 REST API开发接口OCSInventory提供完整的API支持以下是通过Python调用API的示例import requests from base64 import b64encode auth b64encode(badmin:admin_password).decode(utf-8) headers {Authorization: fBasic {auth}} # 获取所有设备列表 response requests.get( http://ocsserver/ocsapi/v1/computers/list, headersheaders, params{start: 0, limit: 100} ) # 创建新的资产标签 payload { TAG: Finance-Department, DESCRIPTION: 财务部专用设备 } requests.post(http://ocsserver/ocsapi/v1/tags, jsonpayload, headersheaders)5.2 与监控系统集成通过Nagios插件实现资产健康监控#!/bin/bash # check_ocs_agent.sh COUNT$(mysql -N -uocs -ppassword ocsweb -e \ SELECT COUNT(*) FROM hardware WHERE lastdate DATE_SUB(NOW(), INTERVAL 2 DAY)) if [ $COUNT -gt 5 ]; then echo CRITICAL: $COUNT devices not reporting exit 2 elif [ $COUNT -gt 0 ]; then echo WARNING: $COUNT devices not reporting exit 1 else echo OK: All devices reporting exit 0 fi将此脚本放入Nagios的plugins目录并在commands.cfg中添加define command { command_name check_ocs_agents command_line $USER1$/check_ocs_agent.sh }5.3 自动化运维场景典型工作流示例自动发现新设备 → 2. 根据规则分类 → 3. 部署必要软件 → 4. 加入监控系统# 自动化部署示例 def onboard_new_device(mac_address): device get_device_info(mac_address) if device[os] Windows: deploy_windows_agent(device[ip]) if device[department] HR: install_software(device[ip], HR_Suite) add_to_monitoring(device[hostname]) update_cmdb(device)6. 安全加固实践6.1 通信加密配置启用HTTPS是基本要求以下是使用Lets Encrypt的示例# 安装certbot sudo dnf install -y certbot python3-certbot-apache # 获取证书需提前配置DNS解析 sudo certbot --apache -d inventory.example.com # 设置自动续期 echo 0 3 * * * root /usr/bin/certbot renew --quiet | sudo tee /etc/cron.d/certbot-renew6.2 数据库安全建议实施的MySQL安全措施创建专用用户并限制权限CREATE USER ocs_weblocalhost IDENTIFIED BY complex_password; GRANT SELECT,INSERT,UPDATE ON ocsweb.* TO ocs_weblocalhost;启用审计插件[mysqld] plugin-load-add server_audit.so server_audit_logging ON server_audit_events QUERY_DDL,QUERY_DCL6.3 访问控制策略推荐的角色权限划分角色权限范围操作限制管理员全系统无部门IT所属部门设备不能删除设备记录审计员只读权限仅查看和导出报表帮助台设备基本信息仅查看联系人信息在Administration Profiles中可以通过勾选精确控制每个角色的权限硬件查看/编辑/删除软件查看/管理许可网络查看MAC/IP管理用户/组管理7. 性能优化与扩展7.1 大规模部署架构当设备超过1000台时建议采用分布式架构----------------- | 负载均衡器 | ---------------- | --------------------------------- | | | ----------------- -------------- -------------- | 主数据库服务器 | | 报表服务器 | | 采集服务器 | | (MariaDB Galera) | | (Read Replica)| | (专用Apache) | ------------------ --------------- --------------组件分工主数据库处理所有写操作报表服务器处理Web界面查询采集服务器专用接收客户端数据7.2 数据库分表策略对于超大型部署可以考虑按部门或地区分表-- 创建按部门分区的硬件表 CREATE TABLE hardware_finance LIKE hardware; CREATE TABLE hardware_hr LIKE hardware; -- 使用视图统一查询 CREATE VIEW v_all_hardware AS SELECT * FROM hardware_finance UNION ALL SELECT * FROM hardware_hr UNION ALL ...7.3 缓存优化配置调整Apache和PHP缓存设置/etc/php.iniopcache.enable1 opcache.memory_consumption128 opcache.max_accelerated_files4000 opcache.revalidate_freq60 realpath_cache_size4096K realpath_cache_ttl600对应的Apache配置/etc/httpd/conf.d/00_cache.confIfModule mod_expires.c ExpiresActive On ExpiresByType text/css access plus 1 week ExpiresByType application/javascript access plus 1 month ExpiresByType image/svgxml access plus 1 year /IfModule8. 备份与灾难恢复8.1 完整备份方案推荐的三层备份策略数据库每日全备#!/bin/bash BACKUP_DIR/backups/mysql DATE$(date %Y%m%d) mysqldump -uocs -ppassword --single-transaction --routines \ --triggers --all-databases | gzip $BACKUP_DIR/full_$DATE.sql.gz # 保留最近7天 find $BACKUP_DIR -name *.sql.gz -mtime 7 -delete配置文件版本控制sudo yum install -y git sudo mkdir /etc/ocsinventory-backup sudo git init /etc/ocsinventory-backup sudo cp -a /etc/ocsinventory /etc/ocsinventory-backup/ sudo git -C /etc/ocsinventory-backup add . sudo git -C /etc/ocsinventory-backup commit -m Daily config backup整机镜像备份# 使用BorgBackup进行增量备份 borg create /backups/borg::{now} /etc /var/lib/ocsdb /usr/share/ocsinventory8.2 恢复演练流程定期测试的恢复步骤在新服务器安装相同版本的Rocky Linux恢复MariaDB数据库zcat full_backup.sql.gz | mysql -u root -p复制配置文件scp -r backupuserbackupserver:/etc/ocsinventory-backup /etc/重新安装OCSInventory软件包验证Web界面和客户端连接8.3 高可用配置使用Keepalived实现VIP故障转移# 主服务器配置/etc/keepalived/keepalived.conf vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 42 } virtual_ipaddress { 192.168.1.100/24 } }对应的从服务器只需修改state BACKUP和priority 90。测试故障转移# 在主服务器模拟故障 sudo systemctl stop keepalived # 在从服务器检查VIP接管 ip addr show eth0 | grep 192.168.1.100