Outcold Solutions - Monitoring Kubernetes, OpenShift and Docker in Splunk

Monitoring Docker, OpenShift, Kubernetes - Version 25.10

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.

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: splunkoutputs.collectord.io
spec:
  group: collectord.io
  versions:
    - name: v1
      served: true
      storage: true
      schema:
        openAPIV3Schema:
          type: object
          properties:
            spec:
              type: object
              properties:
                url:
                  type: string
                  format: uri
                insecure:
                  type: boolean
                token:
                  type: string
                  description: "Plain token"
                tokenFromSecret:
                  type: object
                  description: "Reference to a Kubernetes Secret"
                  properties:
                    secret:
                      type: string
                    key:
                      type: string
              oneOf:
                - required: ["token"]
                - required: ["tokenFromSecret"]
  scope: Namespaced
  names:
    listKind: SplunkOutputList
    plural: splunkoutputs
    singular: splunkoutput
    kind: SplunkOutput

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

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

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

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

And after that, you can define SplunkOutput

apiVersion: "collectord.io/v1"
kind: SplunkOutput
metadata:
  name: splunk-user-output-2
spec:
  url: https://splunk-hec.testing:8088/services/collector/event/1.0
  insecure: true
  tokenFromSecret:
    secret: splunk-user-output-2-secret
    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.

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

[input.kubernetes_watch::pods]
disabled = false
refresh = 10m
apiVersion = v1
kind = Pod
type = kubernetes_objects
excludeManagedFields = true
blacklist.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.