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!
An incentive on functionalities
Now that we are familiar with the look of the web admin panel of OCS Inventory NG, let's find out the kinds of functionalities that are hiding beyond those icons.
Firstly, we have the All computers option to enumerate the entire inventory. We can customize the type of columns we want to track. One of the most common configurations is the following setup: Tag, Last Inventory, Computer, User, RAM, and CPU. This seems intuitive and could suffice for most usages. Whenever necessary, we can fine-tune this by adding or removing columns from the following possibilities:
- Bios Manufacturer, Bios Version, Bios Date
- CPU number (stands for core number), CPU Type
- IP address
- Last come
- Manufacturer, Model
- OS Version
- Serial number
- Service pack
- User Agent, User Domain
- Win Product ID, Win Product Key
This gives us a global view of the inventory. Should we want to find more about a specific computer, we click on its name. Then, we are redirected to a dedicated page for that item.
The following two images give us a sense of what to expect.
What's more, we can also find details about the hardware components inside the computer, details about the software applications installed, and even investigate the behavior of IpDiscover. This is how the automatic network diagnosis feature is called. We're going to get in depth of this concept in a later article as we progress and build our inventory.
There are situations when we need to repartition and categorize computers into several groups based on some attributes. This is when the TAG-based repartitioning feature comes out as a winner. We can configure network clients to submit the inventory data accompanied with TAG information. This option is practical when departments or different sites are inventoried in the same database. A simple tag makes all the difference.
The searching functionalities are impressive. We're able to forge any kind of query using parameters such as processor speed, manufacturer, IP address, OS version, and the ones mentioned earlier. The modifiers are EXACTLY, DIFFERENTLY, or LIKE. In this way, we can build complex search queries in a rather simple fashion.
Check out the following example. Let's find Windows-based Test machines in that IP range
From the OCS-NG web interface, we can set up users with different levels of access. This is one of our inventory requirements as well. Lots of other functionalities are worth mentioning, such as categorizing software applications, and setting up ignored ones, which do not matter from our point of view (for example, freeware and open source applications do not require licensing)
The package deployment and remote execution functionalities might be appreciated by some. They won't make or break the deal of choosing OCS-NG anyway. The real benefit comes from its lightweight structure and the intelligent auto-discover routines. On top of these, the modular build of the inventory makes it possible for further extensions.
Until now, we have seen that OCS-NG seems to meet all of the inventorying demands we specified earlier. This means that we're beginning a journey to build an entire fully-fledged inventorying solution from ground up.
We can guarantee a practical ride!
We have kick started our venture to understand and solve IT inventory requirements that exist in almost every firm in the real world. We presented the practical uses of having a mature inventory coupled with a healthy database ready to serve requests. No doubt we have realized that implementing such an integrated process is a necessary method before the situation gets out of control.
Together we created a list of criteria and expectations that we demand from our integrated inventory solution. By having all of these in place, the way work is done inside an organization becomes streamlined. Moreover, we can eliminate unnecessary paperwork. The responsible parties that will be managing their own departments will be able to get their tasks done even more efficiently.
We have realized that centralization is the best solution for an inventory and asset management system. After analyzing and comparing two of the most popular networking and distributed computing paradigms with each other, we backed up our suppositions. We have learned the mechanism of the client-server model as well as the peer-to-peer paradigm architecture.
We have set the scene for the book by presenting an incentive on OCS Inventory NG and overviewing the set of features it brings to the table. Moreover, we can tackle this situation further and build from ground up our OCS-NG inventory on a step-by-step basis.
If you have read this article you may be interested to view :