Monitoring Blog
Release announcements, technical guides and monitoring insights from the ConSol team.
Naemon 1.4.0 is here
Friday, November 11, 2022 in Releases
Today we released the version 1.4.0 of naemon-core and naemon-livestatus. This release includes a new internal command to expire acknowledgements, and a few bugfixes. Due to object structure changes, NEB modules should be re-built when upgrading to 1.4.0 Breaking Changes: Due to object structure changes, it is recommended to recompile any NEB mobules when upgrading to 1.4.0 Features Support for expiring acknowledgments Changed Improvements to Debian packaging, including multiarch installs Bugfixes Fix a crash for external command: CHANGE_CONTACT_HOST_NOTIFICATION_TIMEPERIOD Fix a crash for external command: CHANGE_HOST_CHECK_TIMEPERIOD Livestatus Allow multiline output when submitting passive checks by allowing escaped newlines
Image Change Triggers for Tekton
Monday, March 14, 2022 in Insights
One of our customers is in the process of decommisioning their OpenShift v3.11 cluster. This cluster is currently still used for building customer specific base images. Over time quite a few elaborated pipeline builds (based on Jenkins) have been developed for that purpose. The customer wanted me to migrate the existing pipeline builds on their v3.11 cluster to Tekton (aka OpenShift Pipeline) builds running on their new v4.9 cluster. This task turned out to be quite pesky. Tekton is a beast in many aspects. For instance the base images that we want to build are in some cases dependent on each other. In other words we want one newly built base image to trigger the build(s) of other base image(s). Turned out there is nothing in Tekton that compares to image change triggers in BuildConfigs. …
Visualisation and debugging of Apache Camel routes
Thursday, February 24, 2022 in Insights
The documentation of software is an everyday business of a software developer and engineer. Especially for integration scenarios a diagram on the flow of a message through the system or the whole landscape is an essential illustration. Fortunately there are standardised messaging patterns{:target="_blank"} which can be used. Unfortunately, however, there is no tool which can create such visualizations out of the box directly of source code. In this article we will have a look at Apache Camel{:target="_blank"} and how it is possible to get a graphical representation of an integration route. We will also discuss about debugging it, as some tools have the feature to do this. About Apache Camel and Enterprise Integration Patterns (EIPs) The integration framework Apache Camel was created in …
A look insight Camel K
Thursday, February 24, 2022 in Insights
Today software often needs to be run in cloud environments. Newly developed software, especially microservices are developed with cloud readiness in mind. But we not only have microservices in business environments, we also have integration software. This type of software is developed and designed to connect external services to internal ones. To make this kind of software cloud ready and to make it an ease to deploy them in cloud environments Camel K came up. In this article we will have a look at how Camel K works and what are the concepts behind it. Introduction As mentioned in the short introduction, one of the big goals in today’s software development is to have the software “cloud ready”. This includes packaging and sizing, as startup time becomes important within the cloud, as well …
Streaming and Messaging
Wednesday, July 14, 2021 in Insights
Disclaimer This article is the author’s opinion on similarities and differences between Streaming and Messaging. Streaming and Messaging The first time I was busy with the terms messaging and streaming was during my master thesis in 2016. Among other things, the thesis was about different strategies of microservices integration. During that time, the term messaging was popular. Moroever, Kafka, which is a streaming platform, was popular, too. From a high-level perspective, messaging, kafka and streaming seem to be the same thing… but I never understood, why we have these two terms which are used synonymously in many contexts: messaging and streaming. This article is my answer to that question. I start with aspects that both have in common. Infrastructure Communication flows through a …
A journey of a Helm operator to OperatorHub.io and back again
Monday, May 03, 2021 in Insights
Some time ago, I started a project to create a Helm based operator for an OpenShift application. I used the Operator SDK to create the Helm operator. The Operator SDK documentation describes the parameters pretty good, and it contains a simple tutorial. it does not, however, describe the complete development cycle. This article aims to describe everything from creating the operator to the point where you can upload your operator to OperatorHub.io. We start with a basic Helm Chart. With this, you can install Nginx as a StatefulSet. You can find the source code in my github repo. Before we can start with creating an operator, we need to fulfill some prerequisites. Prerequisite In order to develop the operator, the following applications need to be installed: operator-sdk git oc/kubectl tool …
RabbitMQ
Tuesday, February 09, 2021 in Insights
The first version of RabbitMQ has been released in 2007. Back in these days, the goal was to provide a complete open source implementation of Advanced Message Queuing Protocol (AMQP), aiming at modern messaging needs such as high availability, high performance, scalability and security. Nowadays, RabbitMQ is one of the most popular message brokers and can be found in several domains. This article lights up core concepts and compares it with ActiveMQ Artemis and AWS SQS. RabbitMQ The integration of multiple applications requires some kind of communication. From a high-level perspective the kinds of communication can be grouped into direct and indirect communication. Direct communication means that a direct network connection will be established between sender and receiver of data. This …
How to integrate Kafka with Istio on OpenShift
Tuesday, February 02, 2021 in Insights
Last summer I watched the Red Hat master course about Kafka from Sébastien Blanc. The Kafka setup in Kubernetes presented in the course looked pretty easy. The Kafka client implementation for Java seemed to be easy as well. Furthermore, I wanted to use Kafka for a long time, so I got the idea to extend my Istio example. Each time a service is called, a message is sent to a topic. The service (implemented in Quarkus), as well as the Kafka cluster should be in an Istio Service Mesh and secured with mTLS. I found descriptions of Joel Takvorian that Kafka works with Istio, so I knew (or at least hoped) that my plan should work. This article will describe the overall architecture of the example and which obstacles I encountered during deployment. The demo application and Istio setup The first …
Integration testing with Testcontainers
Tuesday, October 27, 2020 in Insights
Automatic integration tests as part of the development life cycle can save a lot of time and money. Not only when dealing with other service APIs or offering some, also if the application uses a database or other infrastructure services. We at Consol made a lot of good experience to develop the integration tests as part of the life cycle from the beginning of a project. Therefor the Citrus framework is often a good choice to do it automated. But there are other frameworks and libraries which can be useful. In this article, we’ll have a look at Testcontainers. By using a sample microservice, we will show how Testcontainers can be used and what chances it provides. About Citrus The Citrus framework was started to develop in the year 2006 and it still meets the main purpose to do automated …
OpenShift and Let's Encrypt
Wednesday, September 16, 2020 in Insights
So you have this nifty web application deployed on your OpenShift cluster and you want to make it accessible by the whole world with HTTPS under the name coolapp.<mydomain>. Unfortunately you face several issues: Exposing the service to your web application leaves you with a route using the self-signed certificate that was generated during setup of the cluster. None of the browsers in the wild will trust this certificate. The self-signed certificate dictates URLS of the form https://<appname>.apps.<clustername>.<mydomain> (or whatever domain suffix you configured). Not very nice. You might mitigate the previous issues by getting an official certificate signed by a generally trusted institution. But you will have to pay for it. And you will have to pay for it not only once but every year …