Import list of servers

Started by MatthewDreher, May 27, 2016, 05:19:04 PM

Previous topic - Next topic

MatthewDreher

Hello all,

I'm currently in the process of migrating from another monitoring solution and wanted to know if there was an easy way to import a list of names/ip addresses into netxms.  Two caveats here: 1. The servers will not have the agent installed initially (network only monitoring for now) and 2. I'd like to be able to associate an ipv4 and ipv6 ip address to the node when it's imported.   

Thanks for the assistance. 

tomaskir

#1
You will have to do this using a NXShell script, or using the API (I recommend the Java API, its really easy to work with).

Actually, if you want to, you can provide me with a sample csv file of you nodes, and I can write the Java importer into NetXMS for you.
(its that easy, about 200 lines of Java code)

Example csv:

Node name, IPv4 address, IPv6 address, Container to bind to
Example server 1, 1.1.1.1, 1::1, Servers
Example server 2, 2.2.2.2, , Other container

MatthewDreher

Yep, gimme a bit.  I'll make sure it's formatted like you have below.  It's like 400 plus servers, so it can take a bit to go though

Thanks a ton. 

MatthewDreher

Hey, I actually realized something.  I probably can't send out this list. Server names/IP addresses might be considered a bit touchy.  Would you be able to take an input using a file formatted like your example?

tomaskir

Here is a functional NetXMS .csv importer:
https://github.com/tomaskir/NetXMS-csv-importer

It will take any address for a node (ipv4, ipv6 or a hostname), but will not add multiple addresses to a single node.
The reason for this is that NetXMS uses one primary address to communicate with the node, and then discovers all of the node's IP addresses over an Agent (be that NetXMS or SNMP Agent).

Adding multiple IP addresses to a dynamic interface in NetXMS is not possible manually.
I dont want to create multiple interfaces to assign multiple addresses to a node, because you would have to delete them manually later on.

The right solution to having all information (which includes all IP addresses) of a node is to have an Agent.
So lets not code work-arounds, and focus on solving it properly, by having an Agent present on the server node :)

MatthewDreher

Unfortunately, I can't do that.  I've begged, but first and foremost we need to have an agentless monitoring solution.  I'll test this out this week (and I apologize for the delay... hectic week).

Thank you very much. 

MatthewDreher

#6
Hey, finally was able to sit down and work on this.  Getting an error  .Error - "NXCException"!
Error message - "Incompatible operation".

It imports about 150 servers out of a list of about 600, then I get this message. 

Update:  Did a little troubleshooting.  Once I get past about 180 or so entires in the nodes table, I only seem to be able to import servers one at a time using the tool.  Otherwise it throws the above exception. 

tomaskir

#7
I will consult with Viktor (since the error is from the NetXMS API), and get back to you asap.

MatthewDreher

Thank you very much.  You have no idea how helpful this is. 

tomaskir

After consulting with Victor, we found a potential issue when containers for imported nodes have name duplicities with other objects in NetXMS.
(internally, code could have chosen a non-container object to attempt to bind a node to)

I fixed it and released a newer version:
https://github.com/tomaskir/NetXMS-csv-importer/releases

Please try and let me know if it works now.

MatthewDreher

Ah... much better.  Thank you very much. 

tomaskir

Is it working correctly for you now and importing all the nodes?

MatthewDreher

I had a few duplicate IPs to weed out, but yes, I got everything imported.  Thank you very much for the assistance.

gmonk63

Would it be possible to auto create the container if it does not exist

tomaskir

Do you want just to create the container under "Infrastructure services", or do you want to create a whole container path?