Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# Change Log

# 2025-10-28
### Changed
- Fluentd collector container image has been updated to version 1.7.3
- Adds configurable tail plugin parameters for log collection

# 2025-09-16
### Changed
- As per the recent service name change from `Logging Analytics` to `Log Analytics`, updated the relevant documentation and descriptions to reflect the name change.
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,8 @@ Create OCI Log Analytics LogGroup(s) if not done already. Refer [Create Log Grou
# -- OCID for OKE cluster or a unique ID for other Kubernetes clusters.
kubernetesClusterID:
# -- Provide a unique name for the cluster. This would help in uniquely identifying the logs and metrics data at OCI Log Analytics and OCI Monitoring respectively.
# ** Note ** - This value must be same as the cluster key in entity metadata fields above
# <Cluster_Name>_<Cluster_Creation_Time>
kubernetesClusterName:

oci-onm-logan:
Expand Down
2 changes: 1 addition & 1 deletion charts/logan/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ apiVersion: v2
name: oci-onm-logan
description: Charts for sending Kubernetes platform logs, compute logs, and Kubernetes Objects information to OCI Log Analytics.
type: application
version: 4.0.2
version: 4.1.0
appVersion: "3.0.0"

dependencies:
Expand Down
1,035 changes: 623 additions & 412 deletions charts/logan/templates/logs-configmap.yaml

Large diffs are not rendered by default.

112 changes: 112 additions & 0 deletions charts/logan/values.schema.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,51 @@
{
"$schema": "http://json-schema.org/schema#",
"$defs": {
"tailPlugin": {
"type": "object",
"properties": {
"readFromHead": {
"type": "boolean"
},
"flushInterval": {
"type": "integer",
"minimum": 0
},
"followInodes": {
"type": "boolean"
},
"refreshInterval": {
"type": "integer",
"minimum": 10
},
"readLinesLimit": {
"type": "integer",
"minimum": 10
},
"readBytesLimitPerSecond": {
"type": "integer",
"oneOf": [
{ "const": -1 },
{ "minimum": 8192 }
]
},
"posFileCompactionInterval": {
"type": "string",
"pattern": "^[0-9]+[smhd]$"
},
"enableStatWatcher": {
"type": "boolean"
},
"encoding": {
"type": "string"
},
"logLevel": {
"type": "string",
"enum": ["debug", "info", "warn", "error", "fatal"]
}
}
}
},
"required": [
"runtime",
"authtype",
Expand Down Expand Up @@ -51,6 +97,72 @@
"properties": {
"baseDir": {
"type": "string"
},
"tailPlugin": {
"$ref": "#/$defs/tailPlugin"
},
"kubernetesSystem": {
"type": "object",
"properties": {
"tailPlugin": {
"$ref": "#/$defs/tailPlugin"
},
"logs": {
"type": "object",
"patternProperties": {
".*": {
"type": "object",
"properties": {
"tailPlugin": {
"$ref": "#/$defs/tailPlugin"
}
}
}
}
}
}
},
"linuxSystem": {
"type": "object",
"properties": {
"tailPlugin": {
"$ref": "#/$defs/tailPlugin"
},
"logs": {
"type": "object",
"patternProperties": {
".*": {
"type": "object",
"properties": {
"tailPlugin": {
"$ref": "#/$defs/tailPlugin"
}
}
}
}
}
}
},
"genericContainerLogs": {
"type": "object",
"properties": {
"tailPlugin": {
"$ref": "#/$defs/tailPlugin"
}
}
},
"customLogs": {
"type": "object",
"patternProperties": {
".*": {
"type": "object",
"properties": {
"tailPlugin": {
"$ref": "#/$defs/tailPlugin"
}
}
}
}
}
}
},
Expand Down
100 changes: 99 additions & 1 deletion charts/logan/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ image:
# Image pull secrets for. Secret must be in the namespace defined by namespace
imagePullSecrets:
# -- Replace this value with actual docker image url
url: container-registry.oracle.com/oci_observability_management/oci-la-fluentd-collector:1.7.2
url: container-registry.oracle.com/oci_observability_management/oci-la-fluentd-collector:1.7.3
# -- Image pull policy
imagePullPolicy: Always

Expand Down Expand Up @@ -262,8 +262,22 @@ fluentd:
tailPlugin:
# If true, starts to read the logs from the head of the file or the last read position recorded in pos_file
readFromHead: true
# Specifies the log level for the tail plugin. Options: debug, info, warn, error, fatal
# logLevel:
# frequency of flushing the chunks to output plugin.
flushInterval: 60 # seconds
# If true, follow files by inodes instead of paths to better handle file rotations (e.g., Kubernetes/containerd).
followInodes: true
# Interval (seconds) to refresh the list of watched files.
# refreshInterval:
# Maximum number of lines to read from a file per iteration.
# readLinesLimit:
# Throttle file reading by limiting bytes read per second.
# readBytesLimitPerSecond:
# Interval (seconds) to compact pos_file and remove stale/unused entries.
# posFileCompactionInterval:
# If true, enable stat-based watcher for file change detection.
# enableStatWatcher:
# Specifies the encoding of logs. By default, in_tail emits string value as ASCII-8BIT encoding. If encoding is specified, in_tail changes string to given encoding.
# When encoding is set at this level, it gets applied to all the logs being collected. Instead, it can also be set at individual logs under sections like kubernetesSystem, genericContainerLogs, customLogs etc.
# encoding:
Expand All @@ -285,6 +299,18 @@ fluentd:
#worker:
# -- To set timezone override for all kubernetesSystem logs (applies only to log records without explicit timezone identifier in the record itself)
#timezone:
# Optional group-level tail plugin overrides for all kubernetesSystem.logs[*]
# tailPlugin:
# readFromHead: true
# logLevel:
# flushInterval: 60
# followInodes:
# refreshInterval:
# readLinesLimit:
# readBytesLimitPerSecond:
# posFileCompactionInterval:
# enableStatWatcher:
# encoding:

logs:
# -- Kube Proxy logs collection configuration
Expand All @@ -295,6 +321,18 @@ fluentd:
ociLALogSourceName: "Kubernetes Proxy Logs"
# Regular expression pattern for the starting line in case of multi-line logs.
multilineStartRegExp: /^\S\d{2}\d{2}\s+[^\:]+:[^\:]+:[^\.]+\.\d{0,3}/
# Per-log tail plugin overrides take highest precedence
#tailPlugin:
# readFromHead: true
# logLevel:
# flushInterval: 60
# followInodes:
# refreshInterval:
# readLinesLimit:
# readBytesLimitPerSecond:
# posFileCompactionInterval:
# enableStatWatcher:
# encoding:
#metadata:
#"Client Host Region": "America"
#"Environment": "Production"
Expand Down Expand Up @@ -423,6 +461,18 @@ fluentd:
#worker:
# -- To set timezone override for all linuxSystem logs (applies only to log records without explicit timezone identifier in the record itself)
#timezone:
# Optional group-level tail plugin overrides for all linuxSystem.logs[*]
# tailPlugin:
# readFromHead: true
# logLevel:
# flushInterval: 60
# followInodes:
# refreshInterval:
# readLinesLimit:
# readBytesLimitPerSecond:
# posFileCompactionInterval:
# enableStatWatcher:
# encoding:

logs:
# -- Linux CRON logs collection configuration
Expand All @@ -435,6 +485,18 @@ fluentd:
multilineStartRegExp: /^(?:(?:\d+\s+)?<([^>]*)>(?:\d+\s+)?)?\S+\s+\d{1,2}\s+\d{1,2}:\d{1,2}:\d{1,2}\s+/
# -- To set timezone override for cronlog (applies only to log records without explicit timezone identifier in the record itself)
#timezone:
# Per-log tail plugin overrides take highest precedence
# tailPlugin:
# readFromHead: true
# logLevel:
# flushInterval: 60
# followInodes:
# refreshInterval:
# readLinesLimit:
# readBytesLimitPerSecond:
# posFileCompactionInterval:
# enableStatWatcher:
# encoding:

# -- Linux CRON logs collection configuration
securelog:
Expand Down Expand Up @@ -644,6 +706,18 @@ fluentd:
#worker: 1
# -- To set timezone override for genericContainerLogs (applies only to log records without explicit timezone identifier in the record itself)
#timezone:
# Optional group-level tail plugin overrides for all generic container logs
# tailPlugin:
# readFromHead: true
# logLevel:
# flushInterval: 60
# followInodes:
# refreshInterval:
# readLinesLimit:
# readBytesLimitPerSecond:
# posFileCompactionInterval:
# enableStatWatcher:
# encoding:

# -- Configuration for any custom logs which are not part of the default configuration defined in this file.
# All the pod/container logs will be collected as per "genericContainerLogs" section.
Expand All @@ -670,6 +744,18 @@ fluentd:
#worker:
# -- To set timezone override for "custom-id1" (applies only to log records without explicit timezone identifier in the record itself)
#timezone:
# Per-log tail plugin overrides take highest precedence for this custom source
# tailPlugin:
# readFromHead: true
# logLevel:
# flushInterval: 60
# followInodes:
# refreshInterval:
# readLinesLimit:
# readBytesLimitPerSecond:
# posFileCompactionInterval:
# enableStatWatcher:
# encoding:
#custom-id2:
#path: /var/log/custom/*.log
# Log Analytics log source to use for parsing and processing the logs:
Expand All @@ -678,6 +764,18 @@ fluentd:
#multilineStartRegExp:
# Set isContainerLog to false if the log is not a container log (/var/log/containers/*.log). Default value is true.
#isContainerLog: false
# Per-log tail plugin overrides take highest precedence for this custom source
# tailPlugin:
# readFromHead: true
# logLevel:
# flushInterval: 60
# followInodes:
# refreshInterval:
# readLinesLimit:
# readBytesLimitPerSecond:
# posFileCompactionInterval:
# enableStatWatcher:
# encoding:

# -- Alternative approach to define the configuration for any custom logs which are not part of the default configuration defined in this file.
# Provide the Fluentd configuration with the source and filter sections for your custom logs in this section. Exclude the match section. It would be used without any modification.
Expand Down
4 changes: 2 additions & 2 deletions charts/oci-onm/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 4.0.3
version: 4.1.0

# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
Expand All @@ -32,7 +32,7 @@ dependencies:
repository: "file://../common"
condition: oci-onm-common.enabled
- name: oci-onm-logan
version: "4.0.2"
version: "4.1.0"
repository: "file://../logan"
condition: oci-onm-logan.enabled
- name: oci-onm-mgmt-agent
Expand Down
2 changes: 1 addition & 1 deletion charts/oci-onm/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ oci-onm-logan:
kubernetesClusterID: "{{ .Values.global.kubernetesClusterID }}"
kubernetesClusterName: "{{ .Values.global.kubernetesClusterName }}"
image:
url: container-registry.oracle.com/oci_observability_management/oci-la-fluentd-collector:1.7.2
url: container-registry.oracle.com/oci_observability_management/oci-la-fluentd-collector:1.7.3
# Go to OCI Log Analytics Administration, click Service Details, and note the namespace value.
ociLANamespace:
# OCI Log Analytics Default Log Group OCID
Expand Down