Skip to content

Commit d3555fd

Browse files
authored
feat: add support for otel/kafka driver and export (#62)
2 parents 856e158 + eef0d11 commit d3555fd

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+2546
-2062
lines changed

CHANGELOG.md

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,13 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
1515
1616
## [Unreleased]
1717

18+
## [0.7.0] - 2024-04-30
19+
20+
### Added
21+
22+
- Kafka driver and exporter for Otel record logs
23+
- Policy engine backend for Otel record logs
24+
1825
## [0.6.3] - 2024-04-22
1926

2027
### Changed
@@ -223,7 +230,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
223230

224231
- First release of SysFlow Processor.
225232

226-
[Unreleased]: https://github.com/sysflow-telemetry/sf-processor/compare/0.6.3...HEAD
233+
[Unreleased]: https://github.com/sysflow-telemetry/sf-processor/compare/0.7.0...HEAD
234+
[0.7.0]: https://github.com/sysflow-telemetry/sf-processor/compare/0.6.3...0.7.0
227235
[0.6.3]: https://github.com/sysflow-telemetry/sf-processor/compare/0.6.2...0.6.3
228236
[0.6.2]: https://github.com/sysflow-telemetry/sf-processor/compare/0.6.1...0.6.2
229237
[0.6.1]: https://github.com/sysflow-telemetry/sf-processor/compare/0.6.0...0.6.1

Dockerfile

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ ENV GOPATH=/go/
3434

3535
ENV SRC_ROOT=/go/src/github.com/sysflow-telemetry/sf-processor/
3636

37+
ARG BACKEND_TAG=flatrecord
38+
3739
# Install dependencies
3840
RUN dnf update -y --disableplugin=subscription-manager && \
3941
dnf install -y --disableplugin=subscription-manager wget gcc make git device-mapper-devel
@@ -51,9 +53,10 @@ COPY makefile.manifest.inc ${SRC_ROOT}
5153

5254
# Build
5355
RUN cd ${SRC_ROOT} && \
54-
make SYSFLOW_VERSION=$VERSION \
55-
SYSFLOW_BUILD_NUMBER=$BUILD_NUMBER \
56-
install
56+
make BACKEND_TAG=${BACKEND_TAG} \
57+
SYSFLOW_VERSION=${VERSION} \
58+
SYSFLOW_BUILD_NUMBER=${BUILD_NUMBER} \
59+
install
5760

5861
#-----------------------
5962
# Stage: runtime

Makefile

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,18 @@
1010
include ./makefile.manifest.inc
1111

1212
# Basic go commands
13-
PATH=$(shell printenv PATH):/usr/local/go/bin
14-
GOCMD=go
15-
GOBUILD=$(GOCMD) build -trimpath -tags "exclude_graphdriver_btrfs flatrecord"
16-
GOCLEAN=$(GOCMD) clean
17-
GOTEST=$(GOCMD) test -tags "exclude_graphdriver_btrfs flatrecord"
18-
GOGET=$(GOCMD) get -tags "exclude_graphdriver_btrfs flatrecord"
19-
BIN=sfprocessor
20-
OUTPUT=$(BIN)
21-
SRC=./driver
22-
PACKDIR=./scripts/cpack
23-
INSTALL_PATH=/usr/local/sysflow
13+
PATH = $(shell printenv PATH):/usr/local/go/bin
14+
BACKEND_TAG ?= flatrecord
15+
GOCMD = go
16+
GOBUILD = $(GOCMD) build -trimpath -tags "exclude_graphdriver_btrfs ${BACKEND_TAG}"
17+
GOCLEAN = $(GOCMD) clean
18+
GOTEST = $(GOCMD) test -tags "exclude_graphdriver_btrfs ${BACKEND_TAG}"
19+
GOGET = $(GOCMD) get -tags "exclude_graphdriver_btrfs ${BACKEND_TAG}"
20+
BIN = sfprocessor
21+
OUTPUT = $(BIN)
22+
SRC = ./driver
23+
PACKDIR = ./scripts/cpack
24+
INSTALL_PATH = /usr/local/sysflow
2425

2526
.PHONY: build
2627
build: version deps
@@ -65,12 +66,15 @@ install: build
6566
cp ./resources/policies/distribution/* /usr/local/sysflow/resources/policies/
6667

6768
.PHONY: docker-build
68-
docker-build: docker-plugin-builder
69-
( DOCKER_BUILDKIT=1 docker build --cache-from=sysflowtelemetry/plugin-builder:${SYSFLOW_VERSION} -t sysflowtelemetry/sf-processor:${SYSFLOW_VERSION} --build-arg UBI_VER=$(UBI_VERSION) --target=runtime -f Dockerfile . )
69+
docker-build: docker-plugin-builder docker-processor
70+
71+
.PHONY: docker-processor
72+
docker-processor:
73+
( DOCKER_BUILDKIT=1 docker build -t sysflowtelemetry/sf-processor:${SYSFLOW_VERSION} --build-arg BACKEND_TAG=$(BACKEND_TAG) --build-arg UBI_VER=$(UBI_VERSION) --target=runtime -f Dockerfile . )
7074

7175
.PHONY: docker-plugin-builder
7276
docker-plugin-builder:
73-
( DOCKER_BUILDKIT=1 docker build -t sysflowtelemetry/plugin-builder:${SYSFLOW_VERSION} --build-arg UBI_VER=$(UBI_VERSION) --target=base -f Dockerfile . )
77+
( DOCKER_BUILDKIT=1 docker build -t sysflowtelemetry/plugin-builder:${SYSFLOW_VERSION} --build-arg BACKEND_TAG=$(BACKEND_TAG) --build-arg UBI_VER=$(UBI_VERSION) --target=base -f Dockerfile . )
7478

7579
.PHONY: pull
7680
pull:

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
# Supported tags and respective `Dockerfile` links
88

9-
- [`0.6.3`, `latest`](https://github.com/sysflow-telemetry/sf-processor/blob/0.6.3/Dockerfile), [`edge`](https://github.com/sysflow-telemetry/sf-processor/blob/master/Dockerfile), [`dev`](https://github.com/sysflow-telemetry/sf-processor/blob/dev/Dockerfile)
9+
- [`0.7.0-rc3`, `latest`](https://github.com/sysflow-telemetry/sf-processor/blob/0.7.0-rc3/Dockerfile), [`edge`](https://github.com/sysflow-telemetry/sf-processor/blob/master/Dockerfile), [`dev`](https://github.com/sysflow-telemetry/sf-processor/blob/dev/Dockerfile)
1010

1111
# Quick reference
1212

@@ -26,7 +26,7 @@
2626
[docker hub](https://hub.docker.com/u/sysflowtelemetry) | [GHCR](https://github.com/orgs/sysflow-telemetry/packages)
2727

2828
- **Binary packages**:
29-
[deb](https://github.com/sysflow-telemetry/sf-processor/releases/tag/0.6.3/sfprocessor-0.6.3-x86_64.deb) | [rpm](https://github.com/sysflow-telemetry/sf-processor/releases/tag/0.6.3/sfprocessor-0.6.3-x86_64.rpm) | [tgz](https://github.com/sysflow-telemetry/sf-processor/releases/tag/0.6.3/sfprocessor-0.6.3-x86_64.tar.gz)
29+
[deb](https://github.com/sysflow-telemetry/sf-processor/releases/tag/0.7.0-rc3/sfprocessor-0.7.0-rc3-x86_64.deb) | [rpm](https://github.com/sysflow-telemetry/sf-processor/releases/tag/0.7.0-rc3/sfprocessor-0.7.0-rc3-x86_64.rpm) | [tgz](https://github.com/sysflow-telemetry/sf-processor/releases/tag/0.7.0-rc3/sfprocessor-0.7.0-rc3-x86_64.tar.gz)
3030

3131
# What is SysFlow?
3232

core/exporter/commons/config.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ type Config struct {
5858
FileConfig
5959
SyslogConfig
6060
ESConfig
61-
FindingsConfig
61+
KafkaConfig
6262
}
6363

6464
// CreateConfig creates a new config object from config dictionary.
@@ -125,7 +125,7 @@ func CreateConfig(conf map[string]interface{}) (c Config, err error) {
125125
if err != nil {
126126
return
127127
}
128-
c.FindingsConfig, err = CreateFindingsConfig(c, conf)
128+
c.KafkaConfig, err = CreateKafkaConfig(c, conf)
129129

130130
return
131131
}
@@ -139,12 +139,12 @@ const (
139139
FileTransport
140140
SyslogTransport
141141
ESTransport
142-
FindingsTransport
142+
KafkaTransport
143143
NullTransport
144144
)
145145

146146
func (s Transport) String() string {
147-
return [...]string{"terminal", "file", "syslog", "es", "findings", "null"}[s]
147+
return [...]string{"terminal", "file", "syslog", "es", "kafka", "null"}[s]
148148
}
149149

150150
func parseTransportConfig(s string) Transport {
@@ -157,8 +157,8 @@ func parseTransportConfig(s string) Transport {
157157
if ESTransport.String() == s {
158158
return ESTransport
159159
}
160-
if FindingsTransport.String() == s {
161-
return FindingsTransport
160+
if KafkaTransport.String() == s {
161+
return KafkaTransport
162162
}
163163
if NullTransport.String() == s {
164164
return NullTransport
@@ -171,13 +171,13 @@ type Format int
171171

172172
// Format config options.
173173
const (
174-
JSONFormat Format = iota // JSON schema
175-
ECSFormat // Elastic Common Schema
176-
OccurrenceFormat // IBM Findings Occurrence
174+
JSONFormat Format = iota // JSON schema
175+
ECSFormat // Elastic Common Schema
176+
OtelFormat // Open Telemetry schema
177177
)
178178

179179
func (s Format) String() string {
180-
return [...]string{"json", "ecs", "occurrence"}[s]
180+
return [...]string{"json", "ecs", "otel"}[s]
181181
}
182182

183183
func parseFormatConfig(s string) Format {
@@ -186,8 +186,8 @@ func parseFormatConfig(s string) Format {
186186
return JSONFormat
187187
case ECSFormat.String():
188188
return ECSFormat
189-
case OccurrenceFormat.String():
190-
return OccurrenceFormat
189+
case OtelFormat.String():
190+
return OtelFormat
191191
}
192192
return JSONFormat
193193
}

core/exporter/commons/findingsconfig.go

Lines changed: 0 additions & 126 deletions
This file was deleted.

0 commit comments

Comments
 (0)