GeoIP

Use the GeoIP Provisioning Adapter to enrich a node’s asset data with location information. It uses the GeoIP2 Databases from MaxMind to look up longitude/latitude values for a given IP address. To use this adapter you must register and download the GeoLite2-City.mmdb file from MaxMind. This adapter is disabled by default and can be enabled by setting enabled="true" in the configuration file geoip-adapter-configuration.xml.

<geoip-config enabled="true" overwrite="true" database="/opt/opennms/GeoLite2-City.mmdb" resolve="public">

    <location name="Default">
        <subnet cidr="192.168.0.0/16">
           <asset name="latitude" value="35.71572416796933"/>
           <asset name="longitude" value="-79.1625700509753"/>
           <asset name="city" value="Pittsboro"/>
           <asset name="country" value="USA"/>
        </subnet>
        <subnet cidr="10.0.0.0/8">
           <asset name="latitude" value="35.71572416796933"/>
           <asset name="longitude" value="-79.1625700509753"/>
           <asset name="city" value="Pittsboro"/>
           <asset name="country" value="USA"/>
        </subnet>
    </location>

    <location name="Office-Apex">,
        <subnet cidr="192.168.0.0/16">
           <asset name="latitude" value="35.74610980037554"/>
           <asset name="longitude" value="-78.84409459259584"/>
           <asset name="city" value="Apex"/>
           <asset name="country" value="USA"/>
           <asset name="building" value="A"/>
        </subnet>
        <subnet cidr="172.16.0.0/12">
            <asset name="latitude" value="35.74610980037554"/>
            <asset name="longitude" value="-78.84409459259584"/>
            <asset name="city" value="Apex"/>
            <asset name="country" value="USA"/>
            <asset name="building" value="B"/>
        </subnet>
    </location>

</geoip-config>

The sample configuration shows that the database file GeoLite2-City.mmdb is located in the directory /opt/opennms. By specifying overwrite="true" the adapter will overwrite existing asset values.

The attribute resolve has four possible values:

Option Description

primary

Always use the node’s primary interface address to resolve geographical location.

public-ipv4

Use a public IPv4 address to resolve geographical location; use primary interface address if no public IPv4 address exists.

public-ipv6

Use a public IPv6 address to resolve geographical location; use primary interface address if no public IPv6 address exists.

public

Use any public address to resolve geographical location; use primary interface address if no public address exists.

By defining location entries, a user can add different predefined locations for given subnets. This also allows private IP addresses to be handled that cannot be resolved by the database. In the sample configuration, the Default location maps two private networks to an office building in Pittsboro, NC. The second entry for the location Office-Apex maps two private networks to an office building in Apex, NC. The definition given in the configuration takes precedence, so it is possible to even overwrite locations for public IP subnets.