Network Visualization

Hi Fabio,

keep in mind that 2.3 is still in Beta, and the “latest” documentation is for version 2.2.

Our knowledge team is working hard on getting the entire documentation updated for the release date. Take a look here to see if this topic is already done: https://docs.checkmk.com/2.3.0-beta/en/index.html

1 Like

Hello Guys,
I saw your topic and installed all the needed plugins I think. I also can see all the lldp neighbours on Monitoring → Inventory → Search lldp neighbours.
My problem is, there is no Network Topology menu. I just can’t find it.
Maybe a problem of checkmk raw version? Can someone help me find my misstake? I’m using Checkmk Raw Edition 2.3.0 on Ubuntu 22.04 lts . Attached I provided some screenshots.


Thank you for your support!

Best regards
Mathias

This “Network topology” icon is only shown if there is data available in the topology directory.
For example ~/var/check_mk/topology/data/default/data_lldp.json

    def render(self, what, row, tags, custom_vars):
        # Only show this icon if topology data is available
        files = glob.glob("data_*.json", root_dir=topology_data_dir / "default")
        if not files:
            return None

We still have to provide some (way more…) documentation for this hidden feature.
I hope this will happen within the next weeks.

Regards
Andreas

Have you executed as site user the script included in the package “create_topology_data”?
You can find it under “~/local/bin/…”
This script creates the json file needed for visualization.
Also i think your “create_topology_data” plugin is not suitable for CMK 2.3, the same is for the “network_visualization”
@thl-cmk already gave some hints what is needed for CMK 2.3
here

and

@Meister/@schnetz and all other Network Visualization users

I’ve added a small HOWTO to my gitlab repository, I hope this helps to get things working.

BTW: please use the latest MKPs from my site. The create_topology_data.mkp from the exchange is not ready for CMK 2.3.

The name of my tool has been changed to “nvdct”.

The latest version of NVDCT automatically recognizes the correct file format (CMK version), so that --new-format is no longer required.

5 Likes

Good as this caused me 2-3 hours troubleshooting. :slight_smile:

I have finally got some time to play around with this in my homelab with just a few juniper switches and a firewall all talking LLDP (I have also added the IPv4 module and the interface extension)

Things have been working fine, the HW/SW inventory looks ok and the maps are generated ok as well.

However I just moved one of the switches from one site to another site (poller) and now things are not working. I did a new inventory LLDP is not working, the map is empty. When I now look at the other switch the moved to another poller is removed from the path as well.

However when running the nvdct command it is successful and it adds the LLDP sources.
Is the intention that all hosts needs to be monitored from the same site? In our case thats not possible (1000+ switches)

In addition to the above it would be nice if:

  • The pop-over could stay, I would like to perhaps click on the host in the popup

  • Can I customise what fields to show in the pop-up? For example we have custom actions that goes to our CMDB and enable SSH etc. directly from views, would like to have that here as well.
    It would also be nice when towering over a router to show the routing engine CPU usage etc. Or if I hower over an interface to see the bandwidth and things like error rate.

  • This might be overkill but it would be nice if the parent info could be populated. I know its not possible today as a parent host needs to be monitored on the same site (and that does not work for us due to our size)

No, this is not intended. As long as the NVDCT runs on the main site you should be fine. It will automatically detect the remote sites and retrive the data from there. You can check the logfile to see which sites are found.

By default NVDCT uses the CMK livestatus python package (MULTISITE backend).

Here a sample

~/local/bin/nvdct/nvdct.py  --log-level INFO
2024-06-08 16:37:43,171 :: INFO :: nvdct :: <module>() :: 1072 :: Data creation started
2024-06-08 16:37:43,173 :: INFO :: backends :: get_sites() :: 376 :: [MULTISITE] Site central found, Socket: unix:/omd/sites/central/tmp/run/live, TLS: N/A.
2024-06-08 16:37:43,173 :: INFO :: backends :: get_sites() :: 376 :: [MULTISITE] Site remote1 found, Socket: tcp:remote1.test.test:6557, TLS: ('encrypted', {'verify': True}).
2024-06-08 16:37:43,174 :: INFO :: backends :: __init__() :: 335 :: [MULTISITE] Create livestatus connection(s)
2024-06-08 16:37:43,291 :: INFO :: backends :: __init__() :: 99 :: init HOST_CACHE

This sould also work with the RESTAPI backend where CMK fetches the data from the remote sites.

The LIVESTATUS backend is only for single sites.

2024-06-08 16:45:20,804 :: WARNING :: backends :: host_exists() :: 291 :: [LIVESTATUS] Host HOST01 not found in CMK
1 Like

Thanks, I think I’ve read that MULTISITE was used instead of livestatus, so it should work.

As a last resource I moved the switch to the main site LLDP started to work again, but whatever I did I couldn’t get L3v4 discovery working. I just gave up, deleted the host, adding it again and … well everything is now working again… :smiley:

How about the other questions?

The L3v4 topology depends on the host label nvdct/routing_capable:yes, so maybe you need to rediscover the host labels after a host move.

Thats more in the direction of @schnetz for the graphical backend ;-), i think.

You can modify these topology_hover_* views to change the content of the popup

An earlier version of the visualisation made it possible to fix the pop-up menu with one click. It was also possible to fix several popups at once. I removed it again because the screen displayed too much information at a certain stage. So right now, you can only access the host/service information via this context action
image

Regarding the parent information. Are you referring to the ‘Parents/Children’ field in the monitoring core? If the parent/child reside on the same server, you can simply add this field to the topology_hover_* view.
If they are located on different monitoring servers, you have to obtain this information ‘somehow’ differently.
But once this info is available on the central site, it is quite easy to write a custom painter for this info and add it to the existing views.

Thanks. did not know these where normal views. I have managed to get some icons added to our CMDB and SSH just for testing (but as I cant click on them, would be really useful if that was possible) I assume this lies with Checkmk now as the NW visualisation is builtin in 2.3?

It would be really helpful to show graphs as well, but as they are based on normal host/servide views thats not possible, I guess?

Not sure where this is stored. We did copy piggyback hosts data preciously as it was assumed the host who have piggybacked “hosts” are monitored from the same site.

I dont think I want to modify hosts.mk or anything like that, its to scary in larger installations…

hello thanks for your job :+1: else for a discover with L3v4 i have a error
I probably forgot something somewhere, but no idea where
regards

Start time....: 2024-06-14T16:48:54.06
Traceback (most recent call last):
  File "/omd/sites/xxxx/local/bin/nvdct/nvdct.py", line 1128, in <module>
    create_l3v4_topology(
  File "/omd/sites/xxxx/local/bin/nvdct/nvdct.py", line 959, in create_l3v4_topology
    ipv4_info = Ipv4Info(**_entry)
                ^^^^^^^^^^^^^^^^^^
TypeError: Ipv4Info.__init__() missing 4 required positional arguments: 'broadcast', 'cidr', 'netmask', and 'network'

inv_ipv4_addresses 0.0.4-20240407
omd raw 2.3.0p4.cre

@msx008 send you a PM, to fix this i need some additional info.

1 Like

perfect all works :+1: :grinning:

1 Like

just for transparency, the issue was unexpected data in the IP-Address inventory from a host monitored via CMK-agent and SNMP. Lines with unexpected data will now be dropped. You can look for such lines in the log file

2024-06-18 09:56:59,384 :: WARNING :: nvdct :: create_l3v4_topology() :: 545 :: Drop IPv4 address data for host: <YOU-HOST-NAME>, data: {'device': 'lo', 'address': '127.0.0.1', 'type': 'ipv4'}

@msx008 ThX for the feedback and good debug :+1:

1 Like

Hi,

thanks for all that great work. Just started to play around and it’s working amazing.
I’m just wondering if there is a possibility to change the default filter for topology mesh depth?

Thanks and best regards
Peter

You can clone this builtin view and adjust its filters.

Sure thing! You can give the --debug option a shot; sometimes that can shed some light on things.