Professional Documents
Culture Documents
Version 6
SNOWSOFTWARE.COM
CONTENTS
1 Introduction .................................................................................................... 4
2 Installation ...................................................................................................... 7
4 Uninstall ........................................................................................................ 23
6 Troubleshooting ............................................................................................ 25
Page 2 of 56 SNOWSOFTWARE.COM
7.12 Protection against Denial-of-Service attacks ............................................. 49
7.13 Update a SSL certificate ......................................................................... 49
7.14 Customizable processing logic ................................................................ 49
Page 3 of 56 SNOWSOFTWARE.COM
1 INTRODUCTION
This document describes how to install, configure, manage, and troubleshoot the latest
version of Snow Inventory Server; Some functionality described in this document may
work differently or not at all in previous versions.
For environments that have Snow Inventory Server 3.2 in production and plan to upgrade,
contact Snow Software or your local Snow partner for assistance with the necessary pre-
upgrade checks and post-upgrade validations.
1.2 PREREQUISITES
1.2.2 CERTIFICATES
For communication using HTTPS, an SSL certificate must be available prior to the
installation of Snow Inventory Server is started.
If the Snow Inventory database has been created beforehand, a SQL account with
db_owner privileges is needed for accessing that database.
If the Snow Inventory database is to be created via Snow Inventory Server Configuration
Manager, a SQL account with sa privileges is needed. This account will be used for
accessing the database after the installation, so it is recommended to reduce the account
privileges to a db_owner level after the installation.
Page 4 of 56 SNOWSOFTWARE.COM
1.3 DEFINITIONS
Term Description
Discovery site Used for identification of the Inventory server and for all discovery
name data. A Discovery site name can be of a geographical or
organizational nature, or any other that will suit the needs.
Snow Inventory Snow Inventory Agents collect software information, software usage
Agents (metering), hardware specifications, and user information from the
computers within the organization. Each agent sends its inventory
result to a Master Server instance for processing, either directly or
via a Service Gateway instance.
Master Server The Master Server instance receives the inventory data reported by
the agents, processes the data and writes to the Inventory database.
Also, it processes and writes Active Directory Discovery data to the
database.
Snow Inventory The Snow Inventory database is used for storing the inventory data
database reported by the Snow Inventory agents. The Inventory database is
an SQL server database.
Requires a license X - -
Page 5 of 56 SNOWSOFTWARE.COM
Functionality Master Service Standalon
Server Gatewa e Receiver
y
Page 6 of 56 SNOWSOFTWARE.COM
2 INSTALLATION
The installation files of Snow Inventory Server are delivered as an installation package.
Once the package has been installed, installation and configuration of Master Server and
Service Gateways can take place by using the Snow Inventory Server Configuration
Manager.
When running the installation, a selection must be made whether to install a Master
Server or a Service Gateway. A Master Server installation includes all of the components
listed above, while a Service Gateway installation only includes the Snow Inventory Server
component.
NOTE
▪ Snow Inventory will share the component Snow Update Service (SUS) with
Snow License Manager. Therefore, these components will always be installed
in the location of the system variable %PROGRAM FILES% and not in the
selected destination folder. Please make sure that the user running the
installation package has access to that path.
Page 7 of 56 SNOWSOFTWARE.COM
File name Location Description
Option Description
Default: Master
Page 8 of 56 SNOWSOFTWARE.COM
Examples
Line Result
Page 9 of 56 SNOWSOFTWARE.COM
6. Select Next.
Page 10 of 56 SNOWSOFTWARE.COM
11. In the HTTP Bindings step for Base Address:
▪ For HTTPS only: Select an existing certificate in the list.
▪ Select Network interface and type a Port, if different from the default
port. This is the binding used by Snow Inventory Server to receive data.
▪ Optional: configure a DNS name that will be used to validate connections to
Snow Inventory Server.
NOTE
If DNS name is configured, Snow Inventory Server must be addressed by
DNS name (i.e. not by hostname, another DNS name, or IP address) for the
connection to be accepted by Snow Inventory Server.
NOTE
If Snow Inventory Server uses the same network interface and the same
port as another application on the server, for example Snow License
Manager, DNS name must be configured with a unique name. This also
applies to the binding for Snow License Manager (see 12 below).
Page 11 of 56 SNOWSOFTWARE.COM
and the server running Snow License Manager must be able to resolve the
DNS name of this endpoint correctly.
13. Select Add alternative address to add more endpoints which Snow Inventory
Server will use to receive data. Up to 20 alternative addresses can be added and
will display in tabs to the right of the default tabs.
14. Select Next.
15. In the Server settings step:
a. Enter a Discovery site name. This site name will be used for this Snow
Inventory server and for all discovered devices.
b. Enter the path to the Incoming folder where all inventory files will be
received before they are processed in the database, or click to browse for
the folder.
Page 12 of 56 SNOWSOFTWARE.COM
16. Click Next.
Page 13 of 56 SNOWSOFTWARE.COM
5. Select Next.
Page 14 of 56 SNOWSOFTWARE.COM
8. In the Server Settings step:
a. Enter the path to the Incoming folder where all inventory files will be
received before they are forwarded to the Inventory Master Server, or select
to browse for the folder.
b. Enter a Discovery site name. This site name will be used for the Inventory
server and for all discovered devices.
9. Select Next.
Page 15 of 56 SNOWSOFTWARE.COM
2.5 CREATE A STANDALONE RECEIVER INSTANCE
An Inventory Server with the Standalone Receiver role gathers inventory data from agents
and any SIM connectors, but instead of sending it forward to the Master Server, either
directly or via the next Service Gateway in line, it keeps and stores the data.
NOTE
▪ A Standalone Receiver can only receive data from Inventory agents and SIM
connectors. It cannot communicate with the Master Server or any Service
Gateways in the Snow Inventory infrastructure.
▪ As the Master Server is not aware of its own existence, the Standalone
Receiver is not visible in the Snow Inventory Admin Console.
▪ For HTTP:
Type a Port and a DNS name that will be used for accessing this Snow
Inventory server.
5. Select Next.
Page 16 of 56 SNOWSOFTWARE.COM
6. In the Server Settings step, enter the path to the Incoming folder where all
inventory files will be received by the Standalone Receiver, or select to browse
for the folder.
7. Select Next.
▪ IncomingFolder is the location where the inventory data will be stored, either in a
local folder or on a file share.
▪ BaseAddress is the default endpoint address (including the port number) where the
Standalone Receiver will receive data.
EXAMPLE
<Configuration>
<StandaloneReceiver>
<Server>
<IncomingFolder>D:\Incoming</IncomingFolder>
<BaseAddress>http://MyStandaloneReceiver:8778</BaseAddress>
</Server>
</StandaloneReceiver>
</Configuration>
Page 17 of 56 SNOWSOFTWARE.COM
2. On the Welcome page of the Snow Inventory Server Configuration Manager, select
Click here for additional options…
3. In the Additional options dialog box, select Create database.
4. In the Database step:
a. Enter a Name or a network address for the SQL server instance to be
used.
b. Enter the Name of database to be created.
c. Select one of the following authentication alternatives:
▪ Select the Use Windows Authentication check box.
▪ Enter User ID and Password of an SQL user account with
permissions to create the database.
d. To add additional settings for the database connection, select the Use these
additional connection string properties check box and enter the
properties in the box that is displayed. Use semicolon as delimiter.
5. Select Next.
Page 18 of 56 SNOWSOFTWARE.COM
7. Select Next.
Page 19 of 56 SNOWSOFTWARE.COM
5. Select Next.
a. Enter the path to the Output folder for the export file, or select to
browse for the folder.
b. To only export data which matches a specific site name, enter a site name in
Filter by site name. It is possible to use wildcards and patterns as per the
syntax of the LIKE operator in Microsoft T-SQL. This field is optional.
c. To only export data which matches a specific device name, enter a device
name in Filter by device name. It is possible to use wildcards and patterns
as per the syntax of the LIKE operator in Microsoft T-SQL. This field is
optional.
d. Use the Limit historical data to at the most option to set a limit for
export of information, such as metering and login history.
7. Select Export.
Page 20 of 56 SNOWSOFTWARE.COM
3 COMMAND LINE
The general command line format for the Snow Inventory Server is:
Available commands:
Command Description
dmc
install
start
stop
test <test-case>
uninstall
Page 21 of 56 SNOWSOFTWARE.COM
3.1 COMMAND: START
The start command cannot be used with command line arguments in a command prompt.
Instead, it uses arguments entered in the registry, which means that arguments must be
set in the registry in order for the start command to take effect. The arguments are set in
the following path:
Registry path:
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
\SnowInventoryServer5
Key:
ImagePath
Example:
Page 22 of 56 SNOWSOFTWARE.COM
4 UNINSTALL
Snow Inventory Server is uninstalled via Programs and Features in the Windows
Control Panel.
Page 23 of 56 SNOWSOFTWARE.COM
5 KNOWN LIMITATION
There is a known limitation with setup packages for older versions of Snow License
Manager (version 8.0.04 and lower).
Scenario:
▪ Snow Inventory Server (Master Server or Service Gateway) and Snow License
Manager are installed on the same machine
▪ Snow License Manager was installed using a setup package with version 8.0.04 or
lower.
If Snow License Manager is uninstalled, registry keys will be deleted, not only those
related to Snow License Manager but also keys related to Inventory Server and Snow
Update Service (SUS).
To correct this, use the repair functionality in Snow Inventory Installer which resets all
registry keys and values so that Snow Inventory and SUS can work properly as before.
The repair functionality is available via Programs and Features in the Windows Control
Panel.
Page 24 of 56 SNOWSOFTWARE.COM
6 TROUBLESHOOTING
The following chapter contains tips related to troubleshooting of both installation and
running of the Snow Inventory Server 6.
6.1 INSTALLATION
If the installation for some reason cannot be completed and must be cancelled, the
Inventory 6 database must be deleted manually, and a new one must be created.
6.2 CERTIFICATES
If a certificate is selected in the HTTP Bindings step of the installation process, but another
different certificate is already associated with that <ip>:<port> combination, a warning
will be displayed and the installation cannot proceed.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters
\SslBindingInfo
The <ip>:<port> parameter is typically used with the unassigned IP address 0.0.0.0 but
can be used to bind to a specific interface as well. However, the port has to be unique and
you can only have a single certificate hash bound to a specific port.
This can be verified in the Certificates MMC since a certificate with a private key is
indicated by an icon with a key.
Page 25 of 56 SNOWSOFTWARE.COM
To solve this:
The tool can be used independently of Snow Inventory Server and is available in Snow
Community: https://community.snowsoftware.com/s/article/Snow-Inventory-File-
Extractor-tool
For more details and usage instructions, please read the Snow Community knowledge
article.
Page 26 of 56 SNOWSOFTWARE.COM
7 ADVANCED CONFIGURATION
<Configuration>
<Master>...</Master>
<ServiceGateway>...</ServiceGateway>
<StandaloneReceiver>...</StandaloneReceiver>
<Logging>...</Logging>
<AgentIdentity>...</AgentIdentity>
<ModuleConfiguration>...</ModuleConfiguration>
</Configuration>
NOTE
The tool creates a key that needs to be copied to a folder on the Inventory server (all keys
must be located in the same folder) as well as to a folder on the computer(s) to be
inventoried. The file is named <fingerprint>.cryptkey.
Use this setting in the configuration file of the Inventory server to specify the folder where
the crypto keys are located:
<Master>
<Server>
<CryptoKeyFolder>drive:\path\to\folder\with\cryptokeys</CryptoKeyFolder>
</Server>
</Master>
Use these settings in the configuration file of the agent to specify the fingerprint of the
crypto key to use for Snowpack encryption, and the folder where it is located (optional):
<SystemSettings>...
<Setting key="snowpack.encryption_fingerprint"
value="b6089ea5556a6ab86775bf19ed65791c"/>
<Setting key="snowpack.encryption_path" value="path/to/folder/with/cryptokey"/>
</SystemSettings>
Page 27 of 56 SNOWSOFTWARE.COM
If no folder path is specified, the path to the agent itself will be used.
Site name grouping is used to match computer identities with different site names, which
have reported via different sources.
This feature is currently only used for computers that are inventoried via Snow Inventory
Agent or Snow Integration Manager and matched with computers that have been
discovered via Active Directory or Network Discovery. For example, one computer, which
has both been inventoried and discovered, may be reported with different site names; a
common problem in this scenario is that the computer is incorrectly reported as
discovered but not inventoried.
▪ If the site name of a computer does not match an explicitly defined site name
group, the computer will implicitly be considered to be part of a group with its
site name; this is the default behavior.
EXAMPLE
site01 acme
site02 acme
In this example, computers where the inventory record has the site name site01 or
site02 will be matched with discovered computers that have sitename site01 or
site02.
NOTE
In Snow Inventory Server, a tenant is an entity; it can be a customer, an
organization, a cost center, etc. Typically, tenant environments are
characterized by being isolated from each other.
NOTE
A dedicated Snow Inventory Server installation is used by only one tenant. A
shared Snow Inventory Server installation is used by more than one tenant.
Page 28 of 56 SNOWSOFTWARE.COM
7.3.1 SCENARIO 1: TENANTS THAT ONLY USE ONE SITE NAME
This scenario applies to tenants—hosted on either a dedicated or a shared Snow Inventory
Server installation—which use (only) one site name for both discovery and inventory data.
No configuration is required for these tenants as the only site name that is used is
considered a site name group: the computer-data sets will only be matched with data sets
with the same site name.
NOTE
This scenario partially overlaps with Scenario 3, which is for tenants that only use
one site name and are hosted in a dedicated Snow Inventory installation; in this
case, the two configurations are the same.
7.3.2 SCENARIO 2: TENANTS THAT USE MORE THAN ONE SITE NAME
AND IS HOSTED ON A SHARED SNOW INVENTORY
INSTALLATION
This scenario applies to tenants that are hosted on a shared Snow Inventory installation
where more than one site name is used for discovery and inventory data.
A site name group should be defined for each tenant. All site names for each tenant
should be added to their site name group; the computer-data sets will only be matched
against other data sets that have a site name associated to the same site name group as
the original site name.
Company1Subsidiary1 acme
Company1Location2 acme
Company3 ajax
Country5Company3 ajax
Select Consider all site names as belonging to the same group to match computer-
data sets with other data sets without site name restrictions. Only other identity
properties will be taken into consideration.
NOTE
This scenario partially overlaps with Scenario 1, which applies for tenants that only
use one site name and are hosted on a dedicated Snow Inventory installation
Page 29 of 56 SNOWSOFTWARE.COM
7.4 RESTRICT PROCESSING OF FILES
By default, all types of files are processed by the Inventory Server. However, by using the
whitelisting and blacklisting functionality in the configuration file of the server it is possible
to control what type of files to process, or not to process.
Use the <WhiteList> element to define file extensions of all file types to be processed, or
use the <BlackList> element to define file extensions of all file types not to be processed.
This example will only process files with extensions .exe and .txt:
<Master>
<DataProcessor>
<ApplicationProcessing>
<FileExtensions>
<WhiteList>
<Extension>exe</Extension>
<Extension>txt</Extension>
</WhiteList>
</FileExtensions>
</ApplicationProcessing>
</DataProcessor>
</Master>
This example will process all files but the ones with the extensions .dll and .log:
<Master>
<DataProcessor>
<ApplicationProcessing>
<FileExtensions>
<BlackList>
<Extension>dll</Extension>
<Extension>log</Extension>
</BlackList>
</FileExtensions>
</ApplicationProcessing>
</DataProcessor>
</Master>
NOTE
If file extensions have been defined in the <WhiteList> element, any defined
extensions in the <BlackList> element will be ignored.
<ModuleConfiguration>
<Module typeName="MasterServerModule">
Page 30 of 56 SNOWSOFTWARE.COM
<Setter propertyName="SnowLicenseManagerConfigurationUri">"http://
SLMSERVER/IDX/InventoryConfigUpdate.ashx"</Setter>
</Module>
</ModuleConfiguration>
Example:
<Server>
<RequireClientCertificate>true</RequireClientCertificate>
<ClientCertificateWhitelist>
<Thumbprint>a2bc6b0d3db17c9eed17647393f079eabc95238f</Thumbprint>
<Thumbprint>a3bc8b0d7db17a9eed17523993f079eabe25938f</Thumbprint>
</ClientCertificateWhitelist>
</Server>
NOTE
If the RequireClientCertificate is set to true, Thumbprint elements must be
specified under ClientCertificateWhitelist, or any client certificate will be
allowed.
To override the default behavior for identifying computers, configure the HostNameOnly
mode by using the <HostNameOnly> element in the Inventory server configuration file.
The HostNameOnly mode will only identify computers by their hostname and site name
parameters.
EXAMPLE
1 COMP1 SITE1 X Y
2 COMP2 SITE1 X Y
3 COMP1 SITE2 X Y
1 COMP1 SITE1 Z A
2 COMP2 SITE1 Y X
Page 31 of 56 SNOWSOFTWARE.COM
The example table displays how computers are identified when HostNameOnly
mode is used with the element <HostName>COMP*<HostName>.
In the example above, the Computer ID column displays the computer object ID.
The HostNameOnly mode can be configured to affect all computers or a subset according
to the table below.
Editing the Inventory server configuration file can result in unexpected outcomes such as
overwritten or duplicated data. Take care when editing.
NOTE
The HostNameOnly mode applies for all computers that report to Snow Inventory,
via both Inventory agents and Inventory clients.
SiteNames The site name of the computer, defined in the Inventory Agent
configuration file.
EXAMPLE
<SiteName>MySite</SiteName>
ConfigNames The name of the Inventory Agent configuration, defined in the agent
configuration file.
EXAMPLE
<ConfigName>MyWindowsConfig</ConfigName>
EXAMPLE
<HostName>MyServer1*</HostName>
EXAMPLE
<BiosSerialNumber>123456*</BiosSerialNumber>
EXAMPLE
<OperatingSystem>Windows*</OperatingSystem>
7.7.1 CONFIGURATION
A SiteConfiguration group contains a boolean expression and groups of criteria. Each
group is given a name used as identifier in the boolean expression. Each group of criteria
is evaluated to true or false, depending on whether the evaluated computer fulfills the
Page 32 of 56 SNOWSOFTWARE.COM
criteria or not, and then it is added in the boolean expression. Finally, if the boolean
expression evaluates to true, then HostNameOnly mode is used to identify the computer.
NOTE
<AgentIdentity>
<HostNameOnly>
<SiteConfiguration expression="{B}">
<OperatingSystems name="B">
<OperatingSystem>AIX</OperatingSystem>
</OperatingSystems>
</SiteConfiguration>
</HostNameOnly>
</AgentIdentity>
For older installations of Inventory Server, manually add the element to the configuration
file.
<Configuration>
<AgentIdentity>
<HostNameOnly>
<SiteConfiguration expression="{A}">
<SiteNames name="A">
<SiteName>*</SiteName>
</SiteNames>
</SiteConfiguration>
</HostNameOnly>
</AgentIdentity>
</Configuration>
EXAMPLE 2
Target: All computers in MySite, and with a configuration that is either MyConfig1 or
MyConfig2.
Page 33 of 56 SNOWSOFTWARE.COM
<Configuration>
<AgentIdentity>
<HostNameOnly>
<SiteConfiguration expression="{A} AND {B}">
<SiteNames name="A">
<SiteName>MySite</SiteName>
</SiteNames>
<ConfigNames name="B">
<ConfigName>MyConfig1</ConfigName>
<ConfigName>MyConfig2</ConfigName>
</ConfigNames>
</SiteConfiguration>
</HostNameOnly>
</AgentIdentity>
</Configuration>
EXAMPLE 3
<Configuration>
<AgentIdentity>
<HostNameOnly>
<SiteConfiguration expression="{A} AND {B}">
<ConfigNames name="A">
<ConfigName>MyConfig1</ConfigName>
<ConfigName>MyConfig2</ConfigName>
</ConfigNames>
</SiteConfiguration>
</HostNameOnly>
</AgentIdentity>
</Configuration>
EXAMPLE 4
▪ Scenario 1:
◦ site is MySite
▪ Scenario 2:
Page 34 of 56 SNOWSOFTWARE.COM
<Configuration>
<AgentIdentity>
<HostNameOnly>
<SiteConfiguration expression="({A} AND {B} AND {E} and not{C}) or {D}">
<SiteNames name="A">
<SiteName>MySite</SiteName>
</SiteNames>
<ConfigNames name="B">
<ConfigName>MyConfig1</ConfigName>
<ConfigName>MyConfig2</ConfigName>
</ConfigNames>
<HostNames name="C">
<HostName>*bde*</HostName>
<HostName>host2</HostName>
</HostNames>
<BiosSerialNumbers name="D">
<BiosSerialNumber>To Be Filled By O.E.M.</BiosSerialNumber>
<BiosSerialNumber>System Serial Number</
BiosSerialNumber>
<BiosSerialNumber>0123456789</BiosSerialNumber>
</BiosSerialNumbers>
</SiteConfiguration>
</HostNameOnly>
</AgentIdentity>
</Configuration>
The normalized hostname also affects identity management and can aid consolidating data
from different data sources for the same computer.
This feature is not enabled by default. It can apply to the entire computer estate, or to a
portion of it, defined by configurable criteria. The criteria are defined in the
snowserver.config configuration file, and their parameters are detailed in the table below.
CAUTION
Take care when planning to configure and enable the HostNameNormalization
feature. When the feature is applied, the data already processed is not affected
retroactively, and only newly incoming data is normalized.
Especially when used together with the HostNameOnly mode, a change in the
configuration of this feature can lead to duplication of affected computer entries.
Page 35 of 56 SNOWSOFTWARE.COM
Available criteria Description
group
SiteNames The site name of the computer, defined in the Inventory Agent
configuration file.
EXAMPLE
<SiteName>MySite</SiteName>
ConfigNames The name of the Inventory Agent configuration, defined in the agent
configuration file.
EXAMPLE
<ConfigName>MyWindowsConfig</ConfigName>
EXAMPLE
<HostName>*.domain.local</HostName>
EXAMPLE
<OperatingSystem>Windows*</OperatingSystem>
EXAMPLE
Linux server with Snow Inventory Agent and ILMT connector
A scenario where the HostnameNormalization feature can be used is when Snow
Inventory collects data for a Linux server using both the Snow Inventory Agent for
Linux and the IBM License Metric Tool (ILMT) connector, and the Linux server
hostname is configured as FQDN.
In this case the desired outcome is to have one computer entry that combines the
software data coming from the agent and the IBM Processor Value Unit data coming
from the ILMT connector.
Configure the HostnameNormalization feature to make sure that the entries from
the different data sources are consolidated as one computer and not as different
computers.
EXAMPLE
Misconfiguration for HostNameOnly and HostnameNormalization
In this scenario, the Snow Inventory Agent is configured with the same SiteName
for all computers, both HostNameOnly mode and HostnameNormalization are
enabled for the entire computer estate.
Page 36 of 56 SNOWSOFTWARE.COM
7.8.1 CONFIGURATION
A SiteConfiguration group contains a boolean expression and groups of criteria. Each
group is given a name used as identifier in the boolean expression. Each group of criteria
is evaluated to true or false, depending on whether the evaluated computer fulfills the
criteria or not, and then it is added in the boolean expression. Finally, if the boolean
expression evaluates to true, then HostNameOnly mode is used to identify the computer.
NOTE
EXAMPLE
<?xml version="1.0" encoding="utf-8"?>
<Configuration>
<Master>
[…]
<HostnameNormalization>
<SiteConfiguration expression="{A} AND {B}">
<SiteNames name="A">
<SiteName>snow*</SiteName>
</SiteNames>
<ConfigNames name="B">
<ConfigName>linux-config</ConfigName>
</ConfigNames>
</SiteConfiguration>
</HostnameNormalization>
</Master>
[…]
</Configuration>
EXAMPLE
Enable HostnameNormalization for the entire estate
<?xml version="1.0" encoding="utf-8"?>
<Configuration>
<Master>
[…]
<HostnameNormalization>
<SiteConfiguration expression="true"/>
</HostnameNormalization>
</Master>
[…]
</Configuration>
Page 37 of 56 SNOWSOFTWARE.COM
tag can be added as the last tag in the configuration file (before the closing </
Configuration> tag)
EXAMPLE
<ModuleConfiguration>
<Module
typeName="SnowSoftware.Inventory.Discovery.ActiveDirectory.ActiveDirectoryDisc
overyModule">
<Setter propertyName="IsEnabled">true</Setter>
<Setter propertyName="Interval">7.00:00:</Setter>
</Module>
<Module typeName="SnowSoftware.Inventory.Server.OwinWebApiServerModule">
<Setter propertyName="BaseAddress">"http://server1:8778"</Setter>
<Setter propertyName="AltBaseAddresses">["http://server1:8779","http://
server2:8779]</Setter>
</Module>
</ModuleConfiguration>
The following sections describe some useful modules. For detailed configuration examples,
see Technical Reference: Module Configuration examples for Snow Inventory Server (.xml
file).
FILEPROCESSORMODULE
This module is used for configuration of data processing settings for the inventory files.
propertyName Description
UserName
Default = false
Page 38 of 56 SNOWSOFTWARE.COM
propertyName Description
▪ DEVICE_DRIVER
▪ EXPANSION_SLOT
▪ FONT
▪ KEYBOARD
▪ MODEM
▪ MOUSE
▪ MULTIMEDIA
▪ ODBC
▪ PCI_BUS
▪ PORT
▪ SCSI_ADAPTER
▪ TAPE_DRIVE
▪ UNIVERSAL_SERIAL_BUS
Page 39 of 56 SNOWSOFTWARE.COM
EXAMPLE
<ModuleConfiguration>
<Module typeName="FileProcessorModule">
<Setter propertyName="MaxDegreeOfConcurrency">8</Setter>
<Setter propertyName="MaxUnitCountLicenseGrant">null</Setter>
<Setter propertyName="MaxExpiryLicenseGrant">null</Setter>
<Setter propertyName="MaxStorageBytesForAgentCompressedLogSize">131072</
Setter>
<Setter propertyName="DatabaseErrorTimeout">"00:02:00"</Setter>
<Setter propertyName="ChecksumBuilderMask">-1</Setter>
<Setter propertyName="Interval">"00:00:30"</Setter>
<Setter propertyName="ElementProcessorSet">[
"AGENT_LOG",
"AIX_PARTITIONING",
"CLIENT_STORAGE_DATA",
"CUSTOM_REGKEY",
"DATA_CENTER",
"DEVICE_DRIVER",
"DISPLAY_ADAPTER",
"ENVIRONMENT_VARIABLE",
"EXPANSION_SLOT",
"FONT",
"IBM",
"KEYBOARD",
"LOGICAL_DISK",
"LOGIN_USER",
"MEMORY",
"METERING",
"MOBILE_DEVICE",
"MODEM",
"MONITOR",
"MOUSE",
"MULTIMEDIA",
"NETWORK",
"NT_SERVICE",
"ODBC",
"OPERATING_SYSTEM",
"ORACLE",
"PCI_BUS",
"PHYSICAL_DISK",
"PORT",
"PRINTER",
"PROCESSOR",
"SCAN_STATUS_REPORT",
"SCSI_ADAPTER",
"SWID_TAG",
"TAPE_DRIVE",
"UNIVERSAL_SERIAL_BUS",
"VIRTUAL_MACHINE",
"VIRTUAL_SOFTWARE",
"WEBMETERING",
"WEBMETERINGDISCOVERY"]</Setter>
</Module>
</ModuleConfiguration>
Page 40 of 56 SNOWSOFTWARE.COM
7.9.2 DATA FILE QUEUE
DATAFILEQUEUEMODULE
This module is used to save copies of inventory-data files. This can be useful to save
copies of the snowpack files that are otherwise processed by Snow Inventory Server and
subsequently deleted, for example for migration and troubleshooting purposes.
propertyName Description
IncomingFolder The base folder from where inventory files are retrieved for
processing.
Default = false
EnableFileHistoryForAllData Set to true, inventory files and files that contain heartbeat
information will be saved.
Default = false
NOTE
Copies of inventory-data files are not automatically deleted. Make sure to delete
them manually from time to time to prevent a full disk.
<ModuleConfiguration>
<Module typeName="DataFileQueueModule">
<Setter propertyName="IncomingFolder">"C:\\Program Files\\Snow Software\
\Snow Inventory\\Server\\Incoming"</Setter>
<Setter propertyName="EnableFileHistory">false</Setter>
<Setter propertyName="EnableFileHistoryForAllData">false</Setter>
</Module>
</ModuleConfiguration>
DISCOVERYFILEQUEUEMODULE
This module is used to save copies of discovery-data files.
Page 41 of 56 SNOWSOFTWARE.COM
propertyName Description
IncomingFolder The base folder from where inventory files are retrieved for processing.
Default = false
NOTE
Copies of discovery-data files are not automatically deleted. Make sure to delete
them manually from time to time to prevent a full disk.
<ModuleConfiguration>
<Module typeName="DiscoveryFileQueueModule">
<Setter propertyName="IncomingFolder">"C:\\Program Files\\Snow Software\
\Snow Inventory\\Server\\Incoming"</Setter>
<Setter propertyName="EnableFileHistory">false</Setter>
</Module>
</ModuleConfiguration>
ACTIVEDIRECTORYDISCOVERYMODULE
This module is used for configuration of Active Directory Discovery settings.
propertyName Description
Interval Set the period of time for when a new Active Directory Discovery scan will
begin after the previous scan has completed (D.HH:MM:SS).
EXAMPLE
With an Interval to "7.00:00:00" the next scan will start 7 days
after the previous scan completed.
EXAMPLE
<ModuleConfiguration>
<Module typeName="ActiveDirectoryDiscoveryModule">
<Setter propertyName="IsEnabled">true</Setter>
<Setter propertyName="Interval">"7.00:00:00"</Setter>
</Module>
</ModuleConfiguration>
Page 42 of 56 SNOWSOFTWARE.COM
7.9.5 NETWORK DISCOVERY
NETWORKDISCOVERYMODULE
This module is used for configuration of Network Discovery settings.
propertyName Description
Interval Set the period of time for when a new Network Discovery scan will begin
after the previous scan completed (D.HH:MM:SS).
Default = 1.00:00:00
EXAMPLE
With the default Interval "1.00:00:00" the next scan will start 1
day after the previous scan completed.
NOTE
If the value is set to less than 30 seconds, the server will use an
interval of 30 seconds.
EXAMPLE
<ModuleConfiguration>
<Module typeName="NetworkDiscoveryModule">
<Setter propertyName="MaxDegreeOfConcurrency">5</Setter>
<Setter propertyName="Interval">"1.00:00:00"</Setter>
<Setter propertyName="RateLimiterMaxTotalPackets">700</Setter>
<Setter propertyName="RateLimiterMaxTotalBytes">1048576</Setter>
<Setter propertyName="RateLimiterWindow">"00:00:30"</Setter>
<Setter propertyName="RateLimiterVariance">0.02</Setter>
<Setter propertyName="IsEnabled">true</Setter>
</Module>
</ModuleConfiguration>
GARBAGECOLLECTIONMODULE
This module is used for configuration of garbage collection settings. Garbage collection is
used for removal of historical inventory data from the Inventory database.
propertyName Description
Default = true
Page 43 of 56 SNOWSOFTWARE.COM
propertyName Description
Interval Specifies the time that must pass since the prior
run of the garbage collector has completed. This
value is specified in the hh:mm:ss format.
Default = 02:00:00
Default = 1
Default = 180
Default = 90
Default = 30
NOTE
This data can only be read by Snow
Software staff.
EXAMPLE
<ModuleConfiguration>
<Module typeName="GarbageCollectionModule">
<Setter propertyName="IsEnabled">true</Setter>
<Setter propertyName="Interval">"02:00:00"</Setter>
<Setter propertyName="MaxSequenceNumbers">1</Setter>
<Setter propertyName="DaysOfCumulativeTableHistoryToKeep">90</Setter>
<Setter propertyName="DaysOfMetricHistoryToKeep">30</Setter>
<Setter propertyName="SqlCommandTimeOut">180</Setter>
</Module>
</ModuleConfiguration>
OWINWEBAPISERVERMODULE
This module is used to configure the HTTP/HTTPS endpoint that is opened by Inventory
Server. The following table details some notable properties.
Page 44 of 56 SNOWSOFTWARE.COM
propertyName Description
StrictSecurityTransportHeaderMaxAge When
UseStrictTransportSecurityHeader
is enabled, this is the maximum time,
in seconds, that a connection will be
maintained via HTTPS. By default this
value is 100.
NOTE
HTTP Strict Transport Security is an opt-in security enhancement through use of
a special response header. The specification for this enhancement is released and
published by Internet Engineering Task Force. The entire specification is found here:
datatracker.ietf.org/doc/rfc6797/?include_text=1.
EXAMPLE
<ModuleConfiguration>
<Module typeName="OwinWebApiServerModule">
<Setter propertyName="BaseAddress">"https://*:8443"</Setter>
<Setter propertyName="ApiEndpoint">"https://api.aleb-lab.local:8444"</
Setter>
<Setter propertyName="AltBaseAddresses">["http://*:8080"]</Setter>
<Setter propertyName="RequireClientCertificate">false</Setter>
<Setter propertyName="IsVerbose">false</Setter>
<Setter propertyName="LogScopeName">"master"</Setter>
<Setter propertyName="SiteNameAuthenticationList">null</Setter>
<Setter propertyName="ClientCertificateThumbprints">null</Setter>
<Setter propertyName="UseErroneousServerBehavior">false</Setter>
<Setter propertyName="ServiceUnavailableProbability">1.0</Setter>
<Setter propertyName="InternalServerErrorProbability">1.0</Setter>
<Setter propertyName="MaxRequestMessageSize">67108864</Setter>
<Setter propertyName="MaxConcurrentRequestCount">null</Setter>
<Setter propertyName="UseStrictTransportSecurityHeader">true</Setter>
<Setter propertyName="StrictSecurityTransportHeaderMaxAge">100</Setter>
<Setter propertyName="StrictSecurityTransportHeaderPreload">true</
Setter>
<Setter
propertyName="StrictSecurityTransportHeaderIncludeSubDomains">false</Setter>
</Module>
Page 45 of 56 SNOWSOFTWARE.COM
</Module>
</ModuleConfiguration>
MEASUREMENTMETRICREPLICATIONMODULE
This module enables archiving of performance statistics of the data processing. The
feature is used for troubleshooting, and has little impact on the server performance.
propertyName Description
Default = false
EXAMPLE
<ModuleConfiguration>
<Module typeName="MeasurementMetricReplicationModule">
<Setter propertyName="Window">"00:00:15"</Setter>
<Setter propertyName="FlushInterval">"00:02:00"</Setter>
<Setter propertyName="IsEnabled">true</Setter>
<Setter propertyName="StatisticsDirectory">"C:\\Program Files\\Snow
Software\\Snow Inventory\\Server\\stats"</Setter>
</Module>
</ModuleConfiguration>
CLOUDMETERINGMODULE
This module is used for configuration of Cloud metering settings.
propertyName Description
IncomingFolder The folder on the Inventory Server where the DIS rules distributed by
SUS will be stored.
Default = C:\ProgramData\SnowSoftware\Inventory\Resources
\DIS Rules
Interval Set the period of time for how often the Inventory Server will check the
IncomingFolder for updates (D:HH:MM:SS).
EXAMPLE
<ModuleConfiguration>
<Module typeName="CloudMeteringModule">
<Setter propertyName="IncomingFolder">"C:\\ProgramData\\SnowSoftware\
\Inventory\\Resources\\DIS Rules"</Setter>
<Setter propertyName="Interval">"12:00:00"</Setter>
</Module>
</ModuleConfiguration>
Page 46 of 56 SNOWSOFTWARE.COM
7.9.10 SQL CONNECTION SERVICE
SQLCONNECTIONSERVICEMODULE
This module is used to configure timeout values for connection attempts and command
executions against the Snow Inventory Server database.
propertyName Description
CommandTimeout The number of seconds that must lapse before a command execution
against the Snow Inventory Server database times out. The default
value is 300.
ConnectionTimeout The number of seconds that must lapse before a connection attempt
against the Snow Inventory Server database times out. The default is
null value, which translates to 15 seconds.
During initial communication establishment between an agent and an endpoint, the agent
checks whether the encoded hash key of the endpoint matches the expected key, which is
stored as a hash value in the agent configuration file (default snowagent.config). If the
values match, communication is established, and dropped otherwise. The key is a base64-
encoded sha256-hash string.
For information on how to configure Snow Inventory Agent 6 to enable the public key
pinning feature, read User Guide: Configuration for Snow Inventory Agents version 6 as
available in the Snow Knowledgebase.
CAUTION
Take care when editing the Snow Inventory Server configuration file; erroneous
configuration will stop the server and may require that you contact your local Snow
Professional Services contact person.
The following guide can be used from any machine that has network access to the Snow
Inventory Server.
Page 47 of 56 SNOWSOFTWARE.COM
openssl x509 -in www.invserver.com.pem -pubkey -noout >
www.invserver.com.pubkey.pem
3. Convert the public key from pem to the appropriate format for the local operating
system
The Snow Inventory configuration file can be configured to modify default logging.
The <Logging> parameter must be added to the Snow Inventory configuration file
together with preferred tags. If a tag is added, logging will be recorded for that tag.
<Logging>
<Tags>
<Tag>*</Tag>
</Tags>
</Logging>
For troubleshooting purposes, it is advised to only include tags that you would like to see
logging for.
To see all available tags, follow these steps when you are signed in to the Windows server
that hosts Snow Inventory:
The following code is an example of logging that is enabled for the request-pipe, ssl, and
local-storage tags.
<Logging>
<Tags>
<Tag>request-pipe</Tag>
<Tag>ssl</Tag>
<Tag>local-storage</Tag>
</Tags>
<MaxLogSize>100</MaxLogSize>
</Logging>
<MaxLogSize> can be used to modify the default log-file size. The value for this parameter
represents the number of megabytes (MB) that the file can grow to. By default a log file
can grow to a maximum of two MB in size. The maximum log-file size is 500 MB.
To disable logging for all tags, modify the configuration file as follows:
Page 48 of 56 SNOWSOFTWARE.COM
<Logging>
<Tags></Tags>
</Logging>
The settings are made in the <Server> section of the Snow Inventory Server configuration
file. The following options are available:
▪ MaxRequestMessageSize: Sets a limit, in MB, for the data payload size accepted
by the Snow Inventory Server web APIs. The default value is 64 MB.
EXAMPLE
<Configuration>
<Master>
...
<Server>
...
<SiteName>SnowInventory</SiteName>
<IncomingFolder>C:\Program Files\Snow Software\Snow
Inventory\Server\Incoming</IncomingFolder>
<BaseAddress>https://*:8085</BaseAddress>
<MaxConcurrentRequestCount>200</MaxConcurrentRequestCount>
...
</Server>
...
</Master>
</Configuration>
Snow Inventory Agent and other data sources—for example, Snow Integration Manager—
store data in inv3x.xml files that are then packed into .inv or .snowpack files and sent to
Snow Inventory Server.
Page 49 of 56 SNOWSOFTWARE.COM
The content and the structure of an inv3x.xml file can be seen by use of the Snow
Inventory File Extractor tool; Details of this tool and the tool itself is available for
download at Snow Globe.
Snow Inventory Server receives the data, processes it, and stores it in the Snow Inventory
database.
Most of the data that is processed by Snow Inventory Server is stored as is in the Snow
Inventory database. Some attribute values are evaluated during data processing according
to preconfigured rules. Snow Inventory Server allows these logics to be extended and
customized with Customizable processing logic.
Customizable processing logic allows existing Snow Inventory Server logics to be extended
by applying additional and custom-made rules. These rules are defined in an XML file that
is named DataProcessorRules.xml and saved in folder where Snow Inventory Server is
installed*. This file is loaded by Snow Inventory Server when started and is then
processed by Customizable processing logic.
*A custom path and file name can be used by entering the -data-rules-file [drive:]
[path]filename global option.
If inventoried data does not match any rules, a default value or a null value will be
entered in the Snow Inventory database.
Page 50 of 56 SNOWSOFTWARE.COM
<DataProcessingTypes>
<!-- here are the rules: see examples below -->
</DataProcessingTypes>
For example, a Customizable processing logic file that contains rules to identify an Ubuntu
operating system as a Linux-type, server-class, operating-system looks like this:
<?xml version="1.0" encoding="utf-8"?>
<DataProcessingTypes>
<ServerOperatingSystems>
<ServerOperatingSystemType Expression="{A}">
<OperatingSystem Name="A">ubuntu</OperatingSystem>
</ServerOperatingSystemType>
</ServerOperatingSystems>
<OperatingSystemTypes>
<OperatingSystemType Expression="{A}" OSType="Linux">
<OperatingSystem Name="A">ubuntu</OperatingSystem>
</OperatingSystemType>
</OperatingSystemTypes>
</DataProcessingTypes>
Rules are grouped by RuleType. There are four RuleTypes to reflect the four data points
that are handled by Customizable processing logic:
The next section details the RuleTypes, including their input and output parameters.
Expression contains a template for a Boolean expression that must be applied to Named
Expression Tokens that are defined in the sub-elements of a rule. The expression is a
combination of Boolean logical operators (AND, OR, and NOT) that compare results of
logical evaluation of sub-elements. Parentheses can be be used to group different logic
operations in an Expression. The Output Parameters that are defined in a rule will be
returned if the rule is triggered.
A Named Expression Token represents the Input Parameter of a rule and the value of
the Name attribute is referred to in the expression. The logic always matches a value
string from an attribute in an inv3x.xml file against the value that is enclosed in its tag.
The evaluation compares the value of the Input Parameter that is retrieved from the
inv3x.xml file with the string that is enclosed in the parameter. By default, the evaluation
contains the "ContainsIgnoreCase" logic. This behavior can be changed by specifying a
different logic as value for the Logic attribute of the Named Expression Token. The
values for the Logic attribute are:
Page 51 of 56 SNOWSOFTWARE.COM
▪ EndsWithCase: This is identical to EndsWithIgnoreCase except that it is case
sensitive.
Example:
7.14.2.1 VIRTUALMACHINETYPE
This type of rule detects whether an inventory file represents a virtual machine or not and
an eventual hypervisor name. The rule also normalizes attributes such as Manufacturer
and Model.
The following table shows possible input parameters and corresponding attributes and
elements in the inx3x.xml file.
The following table shows possible output values and corresponding affected table and
columns in the Snow Inventory database.
Example:
Page 52 of 56 SNOWSOFTWARE.COM
7.14.2.2 OPERATINGSYSTEMTYPE
This type of rule detects the operating-system family (e.g. Linux, Windows, and Android).
This is done while creating ClientContext.
The following table shows input parameters and corresponding elements and attributes in
inv3x.xml.
IsExternalProvider and IsMobileDevice are not used as Boolean values instead of being
compared with string patterns.
The following table shows possible output values and the corresponding affected table and
columns in the Snow Inventory database.
The output value of these rules is a string with the OsType name and the name stored in
the database is numeric.
The following table shows the correspondence between OsType names and numeric
values. The same correspondence is reported in the inv.OperatingSystemType table in the
Snow Inventory database.
Windows 0
MacOsx 1
Linux 2
Hpux 3
Solaris 4
Aix 5
VmWare 6
Page 53 of 56 SNOWSOFTWARE.COM
OsType name OsType value
Citrix 7
iOS 8
Android 9
ChromeOS 10
WindowsPhone 11
Symbian 12
Blackberry 13
Mainframe 14
CrossPlatform 15
Undefined 255
Example:
7.14.2.3 SERVEROPERATINGSYSTEMTYPE
This type of rule detects whether an operating-system is considered to be of server-class
or not.
The following table shows the input parameters and corresponding elements and
attributes in the inv3x.xml file.
The following table shows output values and the corresponding affected table and columns
in the Snow Inventory database.
The output parameter is implicitly defined and is therefore not mentioned in the
DataProcessorRules.xml file.
Example:
<ServerOperatingSystemType Expression="{A}">
<OperatingSystem Name="A">ubuntu</OperatingSystem>
</ServerOperatingSystemType>
Page 54 of 56 SNOWSOFTWARE.COM
7.14.2.4 ORACLEDATABASETYPE
This rule type is used to normalize the name, version and edition of Oracle database
products.
The following table shows input parameters and corresponding elements and attributes in
the Snow Inventory Oracle Scanner (SIOS) inv3x.xml file.
The following table shows output values and the corresponding affected table and columns
in the Snow Inventory database.
IsEvaluated [Note: This output parameter is only used to validate whether the input
parameter is valid or not; In the latter case, the execution of the rule set
is stopped.]
Example:
<OracleDatabaseTypes>
<OracleDatabaseType Expression="NOT ({A} OR {B} OR {C} OR {D})"
IsEvaluated="false">
<ProductName Name="A">database</ProductName>
<ProductName Name="B">oracle8</ProductName>
<ProductName Name="C">oracle8i</ProductName>
<ProductName Name="D">oracle9i</ProductName>
</OracleDatabaseType>
<OracleDatabaseType Expression="{A} AND {B}" EvaluatedName="Trusted Oracle
Database 8 Enterprise Edition">
<ProductName Name="A">trusted</ProductName>
<ProductName Name="B">8</ProductName>
</OracleDatabaseType>
<OracleDatabaseType Expression="{A} AND {B}" Version="18c" Edition="Enterprise
Edition">
<ProductName Name="A">18c</ProductName>
<ProductName Name="B">enterprise</ProductName>
</OracleDatabaseType>
</OracleDatabaseTypes>
The first rule is required to determine whether the product name contains a valid string or
not. If the product name to be normalized is not valid, the function will return the null
value.
If the second rule triggers, it will return the product-name string from the EvaluatedName
output parameter.
Page 55 of 56 SNOWSOFTWARE.COM
The third rule is used to determine the version and edition of an Oracle product. If the rule
is executed, the normalized product name will be entered into the Snow Inventory
database as "Oracle Database {Version} {Edition}," where version and edition are
corresponding output parameters.
7.14.2.5 LOGGING
Customizable processing logic does not generate logs by default. To facilitate
troubleshooting of rules, enable log generation for Customizable processing logic in the
Inventory Server snowserver.config file.
[...]
<Logging>
<Tags>
[...]
<Tag>data-rules-engine</Tag>
[...]
</Tags>
[...]
</Logging>
[...]
Example:
2020-06-02T14:26:33+02:00;data-rules-engine;OperatingSystemType;;;DPRE returned
"Windows" as OS type when "OperatingSystem: Microsoft Windows Server 2016
Datacenter, Model: , Manufacturer: , ClientType: Snow Agent - Windows,
HypervisorName: , ScannerVersion: , IsMobileDevice: False, IsExternalProvider: False"
2020-06-02T14:27:24+02:00;data-rules-engine;VirtualMachineType;;;DPRE evaluation
results "OperatingSystem: Microsoft Windows Server 2016 Datacenter, Model: Google
Compute Engine, Manufacturer: Google, ClientType: Snow Agent - Windows,
HypervisorName: Google Compute Engine, IsVirtual: True" for client id "1"
Page 56 of 56 SNOWSOFTWARE.COM