Monitoring Docker, OpenShift, Kubernetes - Version 25.10

docker, kubernetes, openshift, splunk, helm, elasticsearch, opensearch

We are moving away from the sysver to version numbers based on the release date. As we are planning to keep backward compatibility as one of the main goals, there is no reason to keep the version 5 forever. This version will be the first of 25.10.2, where the first two numbers represent the year and month of the release, and the third number represents the patch version. The next major/minor version after that will be 26.04.1, with patches in between, like 25.10.3.

Now let’s talk about the new features in this release.

Store Splunk Tokens in Secrets for User Inputs

We updated the CRD to be able to reference secrets for Splunk tokens in user-defined Splunk outputs. See the updated CRD below.

 1apiVersion: apiextensions.k8s.io/v1
 2kind: CustomResourceDefinition
 3metadata:
 4  name: splunkoutputs.collectord.io
 5spec:
 6  group: collectord.io
 7  versions:
 8    - name: v1
 9      served: true
10      storage: true
11      schema:
12        openAPIV3Schema:
13          type: object
14          properties:
15            spec:
16              type: object
17              properties:
18                url:
19                  type: string
20                  format: uri
21                insecure:
22                  type: boolean
23                token:
24                  type: string
25                  description: "Plain token"
26                tokenFromSecret:
27                  type: object
28                  description: "Reference to a Kubernetes Secret"
29                  properties:
30                    secret:
31                      type: string
32                    key:
33                      type: string
34              oneOf:
35                - required: ["token"]
36                - required: ["tokenFromSecret"]
37  scope: Namespaced
38  names:
39    listKind: SplunkOutputList
40    plural: splunkoutputs
41    singular: splunkoutput
42    kind: SplunkOutput

Now, if you want to create a SplunkOutput resource, you have two options: define the resource as before with the SplunkOutput resource

1apiVersion: "collectord.io/v1"
2kind: SplunkOutput
3metadata:
4  name: splunk-user-output-1
5spec:
6  url: https://splunk-hec.testing:8088/services/collector/event/1.0
7  insecure: true
8  token: 9c91ec81-856e-4293-97c3-2a8b6d4bfc0b

Or use SplunkOutput with a reference to the secret. First, you will create a secret.

1kubectl create secret generic splunk-user-output-2-secret \
2    --namespace default \
3    --from-literal=token="9c91ec81-856e-4293-97c3-2a8b6d4bfc0b" 

And after that, you can define SplunkOutput

 1apiVersion: "collectord.io/v1"
 2kind: SplunkOutput
 3metadata:
 4  name: splunk-user-output-2
 5spec:
 6  url: https://splunk-hec.testing:8088/services/collector/event/1.0
 7  insecure: true
 8  tokenFromSecret:
 9    secret: splunk-user-output-2-secret
10    key: token

After that you can reference those outputs with the annotations like collectord.io/output=splunk::user/default/splunk-user-output-1 or collectord.io/output=splunk::user/default/splunk-user-output-2.

You Can Configure Global Hash Patterns Within ConfigMap for Collectord

Previously, you were able to configure global replace patterns for the logs by placing pipe.replace::name configurations in ConfigMap. Now you can configure global hash patterns for the logs by placing pipe.hash::name configurations in ConfigMap.

1# You can configure global hash rules for the events, which can help to hide sensitive data
2# from logs before they are sent to outputs. Those rules will be applied to all pipelines for container logs, host logs,
3# application logs and events.
4# In the following example we hash IP addresses with fnv-1a-64
5[pipe.hash::name]
6match = (\d{1,3}\.){3}\d{1,3}'
7function = fnv-1a-64

Filtering Objects in Inputs input.kubernetes_watch

Previously, you were able to filter events by fields attached to the Kubernetes API object that Collectord forwards to outputs. For example, you were able to define blacklist.kubernetes_namespace: ^(default|project1|project2)$. Now Collectord can match not only by the attached fields, but also by looking inside the object’s JSON, so you can filter by any field in the object’s JSON. For example, you can filter out all MODIFY events by adding the following configuration to ConfigMap:

1[input.kubernetes_watch::pods]
2disabled = false
3refresh = 10m
4apiVersion = v1
5kind = Pod
6type = kubernetes_objects
7excludeManagedFields = true
8blacklist.type = ^MODIFY$

Redesigned Audit (Overview) Dashboard for Kubernetes and OpenShift

We have redesigned the Audit (Overview) dashboard for Kubernetes and OpenShift. The new dashboard provides a more comprehensive view of the audit logs, including detailed information about the events, users, and resources involved. The dashboard also includes interactive filters and sorting options, making it easier to analyze and troubleshoot issues.

Audit Dashboard

Helm Charts

We have had a significant number of customers who asked for Helm Charts. They are now available at github.com/outcoldsolutions/collectord-helm-charts. Please refer to the charts’ README files to learn more. With those charts, it is possible to easily install one or multiple Collectord instances, with multiple outputs defined.

Other significant changes

  • We are continuing to work on improving connections to the Kubernetes API server, which included improvements on the number of connections Collectord makes on start, as well as randomization of timeouts for watch events, so they would not happen at the same time.
  • You can now define a custom source under input.files::xxx.
  • Collection of prometheus metrics from user services now includes a seed field, which is unique for the lifetime of the input.
  • Added proper timestamp extraction for Audit Logs collected from the host.

You can find more information about other minor updates by following the links below.

Release notes

Upgrade instructions

Installation instructions

About Outcold Solutions

Outcold Solutions provides solutions for monitoring Kubernetes, OpenShift and Docker clusters in Splunk Enterprise and Splunk Cloud. We offer certified Splunk applications, which give you insights across all container environments. We are helping businesses reduce complexity related to logging and monitoring by providing easy-to-use and easy-to-deploy solutions for Linux and Windows containers. We deliver applications, which help developers monitor their applications and help operators keep their clusters healthy. With the power of Splunk Enterprise and Splunk Cloud, we offer one solution to help you keep all the metrics and logs in one place, allowing you to quickly address complex questions on container performance.

Red Hat
Splunk
AWS