№42

... it's better to have good questions

Streaming telemetry with gNMI

This document describes how you can set up a lab environment for testing gNMI using a virtual HPE Juniper router running Junos 24.2 R1-S2.5. It shows how you can collect metrics for interfaces and CPU utilization collected with OpenNMS. This isn’t something I do every day, so I just preserve this here for my future self and the ones who want to get up to speed a bit quicker.

What you will learn

  • Enable gNMI over gRPC with sensors on a HPE Juniper router
  • Verify the gRPC connections and configuration
  • Enable OpenNMS Horizon to subscribe to gRPC streams for sensor data
  • Set up TLS on gRPC using a self-signed certificate authority
  • Visualize the collected data in Grafana

Limitations

  • Streaming telemetry can only be configured from the OpenNMS Core instance, see enhancement NMS-18064
  • Metric labels for network interfaces are right now just resource id strings

Before you begin

You need the following environment to get a lab running:

Continue reading

Go away or I replace you with a Makefile

April 8, 2025 5 min read CI/CD Development Ronny Trommer

I remember the first time I tried to get an open-source project compiled and deployed. The distribution of Linux at this point was Slackware. Build or installation instructions didn’t exist, and without handholding on IRC, it would not have been possible for me. That was 30 years ago, people in IRC were very self-selected, patient, and helpful. When you have skilled patient people in IRC and you can communicate what you did, what exactly failed, and what you would have expected - your learning experience is pretty impressive. Nevertheless, it does not scale well. People nowadays expect things to work with a click of a button. They are even not keen on reading clear instructions.

Continue reading

SNMP Proxy ... wait what?

February 16, 2025 6 min read Monitoring How-To OpenNMS SNMP Ronny Trommer

Working with SNMP in 2025 is still a thing. Most hate it, but it’s sometimes the only thing you can use to get insights into the box you are working with. I want to shed some light on the SNMP proxy capability in Net-SNMP, it might be possible some people haven’t heard of it and might find it useful. In a nutshell, you can use Net-SNMP as a proxy to query information from another SNMP agent over an IP connection you can’t or do not want to query directly.

Continue reading

Hackathon on BGP monitoring using BMP in OpenNMS

February 13, 2025 5 min read Monitoring BMP BGP OpenNMS Ronny Trommer

We have seen people in the OpenNMS chat who started playing with the BGP monitoring protocol. I had some notes in our MediaWiki which doesn’t exist anymore. To provide some background I’ve resurrected my notes and republished the content. I had to tweak a few places to make it a bit more current. During the 5 years, OpenNMS has fixed bugs and maintained the functionality. The main intention of resurrecting the article is to give people some insights and background on what approach was chosen and why things are as they are today.

Continue reading

Building container images for OpenNMS

December 22, 2024 3 min read Monitoring How-To OpenNMS OCI Ronny Trommer

The previous article described how you can build and compile OpenNMS Horizon from source. This section explains how you build container images (OCI) from the source artifacts.

Deploy base image as foundation

Running OpenNMS Horizon core, Minion, or Sentinels in a container requires shared components. Some of them are a) the JDK base image, b) some useful tools, and c) JICMP, and JICMP6.

The JDK is shared with Core, Minion, and Sentinel. JICMP, and JICMP6 are required for Core and Minion. To manage these dependencies, we have a deploy-base image created which covers the main requirements running the Core, Minion, and Sentinel server processes. Getting an efficient size was a goal and a multi-stage build approach was chosen to address it. The fist

Continue reading

Dealing with secrets in OpenNMS Horizon

December 22, 2024 3 min read Monitoring How-To OpenNMS Ronny Trommer

Dealing with secrets in a monitoring platform is a tedious task. The nature of monitoring systems is providing integrations in as many systems. Here is my mental model looking at the various ways for integrating OpenNMS. Especially having a 20 year old platform gives you some very own challenges. Talking about integration of monitoring systems, In OpenNMS Horizon/Meridian (OpenNMS for short), are some places where you have just one option, and some with various options. This article should help you to get an idea where you need to deal with secrets and credentials. The north/south areas serve monitoring purpose whereas the west/east directions address scaling topics in the context of volume, geographic or feature sets.

Continue reading

Hello Containerlab with Orbstack

December 21, 2024 2 min read Technology Ronny Trommer

I still remember signing up on DockerHub 11 years ago. Learning how to build container images on real world projects is definitely a plus. Having a software and some use cases in the back of your mind, helps you to achieve things quicker and with some purpose. I’ve started to work with containerlab to build some network test environments mainly for three use cases:

  • Layer 2 network topologies for network monitoring tests using LLDP, CDP and Bridge-MIB
  • Routing topologies with protocols like BGP, OSPF or IS-IS in general
  • Some vendor specific network gear for monitoring with SNMP and streaming telemetry

Playing with OpenNMS from this perspective opens some use cases around Netflow, IPFIX, BGP monitoring, and SNMP in general. I was using Docker4Mac for a very long time. At some point in time I have switched to colima which was slim and easy to use. With switching to ARM on my Mac it got a bit more complicated.

Continue reading

OpenNMS Horizon with RRDtool

November 30, 2024 5 min read Monitoring How-To OpenNMS Ronny Trommer

As described in the previous article we have built and installed an OpenNMS Horizon Core component from the source. It comes with a Java implementation of RRDTool called JRobin. The portability of Java applications allowed users to run OpenNMS platforms where RRDTool wasn’t easily available. It was threadsafe and allowed more threads writing data. RRDTool implemented that functionality and surpassed JRobin performance and feature wise.

💁‍♀️ If you just don’t care in a dev or testing environment, you can use JRobin for simplicity, because it’s just there and works out of the box. For any production environment, I highly recommend to use RRDTool. It gives you much better support for tools, performance and features. Migrating later is doable but painful.

Continue reading

Demystifying iplike in OpenNMS Horizon

November 29, 2024 6 min read Monitoring How-To OpenNMS Ronny Trommer

As described in the previous article we have built and installed an OpenNMS Horizon Core component from the source.

With setting up the database schema with ${OPENNMS_HOME}/bin/install -dis a function IPLIKE is created for the OpenNMS database.

It allows us to get IP address matches for IPv4 and IPv6 addresses with filters used in all IP filters in the tool, e.g. IPADDR IPLIKE 192.168.0-3.0-255.

By default, the function is implemented in a SQL procedural language (PL/pgSQL). As OpenNMS had to deal with larger IP address inventories, an optimized version in C was created which is available as the IPLIKE package. The C version of this stored procedure has to be built against header files from specific PostgreSQL major versions. This is the reason you see iplike-pgsql{12,13,14,15} packages in the OpenNMS repositories.

Continue reading

JniPing vs. JnaPing

November 28, 2024 6 min read Monitoring How-To OpenNMS Ronny Trommer

As described in the previous article we have build an OpenNMS Horizon Core component from source. If you don’t do anything else, it will uses an ICMP implementation using Java Native Access (JNA). The big benefit here, it’s all Java and supports IPv4 and IPv6. You also don’t need additional permissions on your Linux system such as net.ipv4.ping_group_range and SELinux. It makes it perfect for local development and also if you want to run OpenNMS on exotic architectures where you can’t easily compile or build the JNI equivalent written in C from the source code. The downside it comes with some overhead for each ICMP service test. You can see the effect on the latency measurements, especially on very fast responding IP addresses, such as the local loopack interface.

Continue reading
Older posts