OCS Inventory NG stands for Open Computer and Software Inventory Next Generation , and it is the name of an open source project that was started back in late 2005. The project matured into the first final release in the beginning of year 2007. It’s an undertaking that is still actively maintained, fully documented, and has support forums. It has all of the requirements that an open source application should have in order to be competitive.
There is a tricky part when it comes to open source solutions. Proposing them and getting them accepted by the management requires quite a bit of research. One side of the coin is that it is always favorable, everyone appreciates cutting down licensing costs. The problem with such a solution is that you cannot always take for granted their future support.
In order to take an educated guess on whether an open source solution could be beneficial for the company, we need to look at the following criteria: how frequently is the project updated, check the download count, what is the feedback of the community, whether the application is thoroughly documented, and the existence of active community support.
OCS-NG occupies a dominant position when it comes to open source projects on the area of inventorying computers and software.
Brief overview on OCS Inventory NG’s architecture
The architecture of OCS-NG is based on the client-server model. The client program is called a network agent. These agents need to be deployed on the client computers that we want to include in our inventory.
The management server is composed of four individual server roles: database server, communication server, deployment server, and the administration console server. More often than not, these can be run from the same machine.
OCS Inventory NG is cross-platform and supports most Unices, BSD derivates (including Mac OS X), and all kinds of Windows-based operating systems. The server can be also be run on either platform. As it is an open source project, it’s based on the popular LAMP or WAMP solution stack. This means that the main server-side prerequisites are Apache web server, MySQL database server, and PHP server. These are also the viable components of a fully functional web server.
The network agents communicate with the management server under standardized HTTP protocols. The data that is exchanged is formatted under XML conventions. The screenshot below describes a general overview on the way clients communicate with the management server’s sub-server components.
Rough performance evaluation of OCS-NG
The data that is collected in case of a fully – inventoried computer sums up to something around 5KB. That is a small amount and it will neither overload the server nor create network congestion. It is often said that around one million systems can be inventoried daily on a 3GHz bi-Xeon processor based server with 4 GB of RAM without any issues.
Any modest old-generation server should suffice for the inventory of few thousand systems. When scalability is necessary such as over 10,000-20,000 inventoried systems, it is recommended to split those 4 server-role components on two individual servers.
Should this be the case, the database server needs to be installed on the same machine with the communication server, and on another system with the administration server and the deployment server with a database replica. Any other combination is also possible.
Although distributing the server components is possible, very rarely do we really need to do that. In this day and age, we can seamlessly virtualize up to four or more servers on any dual or quad-core new generation computer. OCS-NG’s management server can be one of those VMs. If necessary, distributing server components in the future is possible.
Meeting our inventory demands
First and foremost, OCS Inventory NG network agents are able to collect all of the must-have attributes of a client computer and many more. Let’s do a quick checkup on these:
- System serial number, manufacturer, and model
- Bios manufacturer, version, and date
- Type, count (how many of them), manufacturer, speed, and cache
- Physical memory type, manufacturer, capacity, and slot number
- Total physical memory
- Total swap/paging memory
- Video adapter: Chipset/model, manufacturer, memory size, speed, and screen resolution
- Display monitor: Manufacturer, description, refresh rate, type, serial number, and caption
- Storage/removable devices:
- Manufacturer, model, size, type, speed( all when applicable)
- Drive letter, filesystem type, partition/volume size, free space
- Network adapters/telephony:
- Manufacturer, model, type, speed, and description
- MAC and IP address, mask and IP gateway, DHCP server used
- Miscellaneous hardware
- Input devices: Keyboard, mouse, and pointing device
- Sound devices: Manufacturer name, type, and description
- System slots: Name, type, and designation
- System ports: Type, name, caption, and description
- Software Information:
- Operating system: Name, version, comments, and registration info
- Installed software: Name, publisher, version (from Add / Remove software or Programs and Features menu)
- Custom-specified registry queries (applicable to Windows OS)
Not only computers but also networking components can be used for inventorying. OCS Inventory NG detects and collects network-specific information about these (such as MAC address and IP address, subnet mask, and so on.). Later on we can set labels and organize them appropriately.
The place where OCS-NG comes as a surprise is its unique capability to make an inventory of hosts that are not on the network. The network agent can be run manually on these offline hosts and are then imported into the centralized management server.
One of its features include intelligent auto-discovering functionalities and its ability to detect hosts that have not been inventoried. It is based on popular network diagnosing and auditing tools such as the nmap . The algorithm can decide whether it’s an actual workstation computer or rather just a printer. If it’s the former, the agent needs to be deployed. The network scanning is not done by the management server. It is delegated to network agents.
This way the network is never overcrowded or congested. If the management server itself scans for populated networks spanning throughout different subnets, the process would be disastrous. This way the process is seamless and simply practical. Another interesting part is the election mechanism based on which the server is able to decide the most suited client to carry out the discovery. A rough sketch of this in action can be seen in the next figure.
Set of functions and what it brings to the table
At this moment, we’re fully aware that the kind information that the network agents are getting into the database are relevant and more than enough for our inventorying needs. Nevertheless, we won’t stop here. It’s time to analyze and present its web interface. We will also shed a bit of light on the set of features it supports out of the box without any plugins or other mods yet. There will be a time for those too.
Taking a glance at the OCS-NG web interface
The web interface of OCS Inventory NG is slightly old-fashioned. One direct advantage of this is that the interface is really snappy. Queries are displayed quickly, and the UI won’t lag.
The other side of the coin is that intuitiveness is not the interface’s strongest point. Getting used to it might take a while. At least it does not make you feel that the interface is overcrowded. However, the location and naming of buttons leaves plenty of room for improvement. Some people might prefer to see captions below the shortcuts as the meaning of the icons is not always obvious. After the first few minutes, we will easily get used to them.
A picture is worth thousands of words, so let’s exemplify our claims.
The buttons that appear in the previous screenshot from left to right are the following:
- All computers
- Tag/Number of PC repartition
- All softwares
- Search with various criteria
In the same fashion, in this case the buttons in the previous screenshot stand for the following features:
- Configuration (this one is intuitive!)
- Registry (self-explanatory)
- Admin Info
- Local Import
When you click on the name of the specific icon, the drop-down menu appears right below on the cursor
All in all, the web interface is not that bad after all. We must accept that the strongestpoint lies in its snappiness, and the wealth of information that is presented in a fraction of a second rather than its design or intuitiveness.
We appreciate its overall simplicity and its quick response time. We are often struggling with new generation Java-based and AJAX-based overcrowded interfaces of network equipment that seem slow as hell. So, we’ll choose OCS Inventory NG’s UI over those anytime!