From b0becab4d1542885ce96f54fc1bf9f35193771b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?No=C3=A9mi=20V=C3=A1nyi?= Date: Mon, 15 Oct 2018 17:16:11 +0200 Subject: [PATCH] do not expose internal type --- journalbeat/reader/fields.go | 124 +++++++++++++++++----------------- journalbeat/reader/journal.go | 14 ++-- 2 files changed, 69 insertions(+), 69 deletions(-) diff --git a/journalbeat/reader/fields.go b/journalbeat/reader/fields.go index d6b0ee0a9908..d33af78e4fc3 100644 --- a/journalbeat/reader/fields.go +++ b/journalbeat/reader/fields.go @@ -19,75 +19,75 @@ package reader import "github.com/coreos/go-systemd/sdjournal" -type FieldConversion struct { - Name string - IsInteger bool - Dropped bool +type fieldConversion struct { + name string + isInteger bool + dropped bool } var ( - journaldEventFields = map[string]FieldConversion{ + journaldEventFields = map[string]fieldConversion{ // provided by systemd journal - "COREDUMP_UNIT": FieldConversion{"journald.coredump.unit", false, false}, - "COREDUMP_USER_UNIT": FieldConversion{"journald.coredump.user_unit", false, false}, - "OBJECT_AUDIT_LOGINUID": FieldConversion{"journald.object.audit.login_uid", true, false}, - "OBJECT_AUDIT_SESSION": FieldConversion{"journald.object.audit.session", true, false}, - "OBJECT_CMDLINE": FieldConversion{"journald.object.cmd", false, false}, - "OBJECT_COMM": FieldConversion{"journald.object.name", false, false}, - "OBJECT_EXE": FieldConversion{"journald.object.executable", false, false}, - "OBJECT_GID": FieldConversion{"journald.object.gid", true, false}, - "OBJECT_PID": FieldConversion{"journald.object.pid", true, false}, - "OBJECT_SYSTEMD_OWNER_UID": FieldConversion{"journald.object.systemd.owner_uid", true, false}, - "OBJECT_SYSTEMD_SESSION": FieldConversion{"journald.object.systemd.session", false, false}, - "OBJECT_SYSTEMD_UNIT": FieldConversion{"journald.object.systemd.unit", false, false}, - "OBJECT_SYSTEMD_USER_UNIT": FieldConversion{"journald.object.systemd.user_unit", false, false}, - "OBJECT_UID": FieldConversion{"journald.object.uid", true, false}, - "_KERNEL_DEVICE": FieldConversion{"journald.kernel.device", false, false}, - "_KERNEL_SUBSYSTEM": FieldConversion{"journald.kernel.subsystem", false, false}, - "_SYSTEMD_INVOCATION_ID": FieldConversion{"systemd.invocation_id", false, false}, - "_SYSTEMD_USER_SLICE": FieldConversion{"systemd.user_slice", false, false}, - "_UDEV_DEVLINK": FieldConversion{"journald.kernel.device_symlinks", false, false}, // TODO aggregate multiple elements - "_UDEV_DEVNODE": FieldConversion{"journald.kernel.device_node_path", false, false}, - "_UDEV_SYSNAME": FieldConversion{"journald.kernel.device_name", false, false}, - sdjournal.SD_JOURNAL_FIELD_AUDIT_LOGINUID: FieldConversion{"process.audit.login_uid", true, false}, - sdjournal.SD_JOURNAL_FIELD_AUDIT_SESSION: FieldConversion{"process.audit.session", false, false}, - sdjournal.SD_JOURNAL_FIELD_BOOT_ID: FieldConversion{"host.boot_id", false, false}, - sdjournal.SD_JOURNAL_FIELD_CAP_EFFECTIVE: FieldConversion{"process.capabilites", false, false}, - sdjournal.SD_JOURNAL_FIELD_CMDLINE: FieldConversion{"process.cmd", false, false}, - sdjournal.SD_JOURNAL_FIELD_CODE_FILE: FieldConversion{"journald.code.file", false, false}, - sdjournal.SD_JOURNAL_FIELD_CODE_FUNC: FieldConversion{"journald.code.func", false, false}, - sdjournal.SD_JOURNAL_FIELD_CODE_LINE: FieldConversion{"journald.code.line", true, false}, - sdjournal.SD_JOURNAL_FIELD_COMM: FieldConversion{"process.name", false, false}, - sdjournal.SD_JOURNAL_FIELD_EXE: FieldConversion{"process.executable", false, false}, - sdjournal.SD_JOURNAL_FIELD_GID: FieldConversion{"process.uid", true, false}, - sdjournal.SD_JOURNAL_FIELD_HOSTNAME: FieldConversion{"host.name", false, false}, - sdjournal.SD_JOURNAL_FIELD_MACHINE_ID: FieldConversion{"host.id", true, false}, - sdjournal.SD_JOURNAL_FIELD_MESSAGE: FieldConversion{"message", false, false}, - sdjournal.SD_JOURNAL_FIELD_PID: FieldConversion{"process.pid", true, false}, - sdjournal.SD_JOURNAL_FIELD_PRIORITY: FieldConversion{"syslog.priority", true, false}, - sdjournal.SD_JOURNAL_FIELD_SYSLOG_FACILITY: FieldConversion{"syslog.facility", true, false}, - sdjournal.SD_JOURNAL_FIELD_SYSLOG_IDENTIFIER: FieldConversion{"syslog.identifier", false, false}, - sdjournal.SD_JOURNAL_FIELD_SYSLOG_PID: FieldConversion{"syslog.pid", true, false}, - sdjournal.SD_JOURNAL_FIELD_SYSTEMD_CGROUP: FieldConversion{"systemd.cgroup", false, false}, - sdjournal.SD_JOURNAL_FIELD_SYSTEMD_OWNER_UID: FieldConversion{"systemd.owner_uid", true, false}, - sdjournal.SD_JOURNAL_FIELD_SYSTEMD_SESSION: FieldConversion{"systemd.session", false, false}, - sdjournal.SD_JOURNAL_FIELD_SYSTEMD_SLICE: FieldConversion{"systemd.slice", false, false}, - sdjournal.SD_JOURNAL_FIELD_SYSTEMD_UNIT: FieldConversion{"systemd.unit", false, false}, - sdjournal.SD_JOURNAL_FIELD_SYSTEMD_USER_UNIT: FieldConversion{"systemd.user_unit", false, false}, - sdjournal.SD_JOURNAL_FIELD_TRANSPORT: FieldConversion{"systemd.transport", false, false}, - sdjournal.SD_JOURNAL_FIELD_UID: FieldConversion{"process.uid", true, false}, + "COREDUMP_UNIT": fieldConversion{"journald.coredump.unit", false, false}, + "COREDUMP_USER_UNIT": fieldConversion{"journald.coredump.user_unit", false, false}, + "OBJECT_AUDIT_LOGINUID": fieldConversion{"journald.object.audit.login_uid", true, false}, + "OBJECT_AUDIT_SESSION": fieldConversion{"journald.object.audit.session", true, false}, + "OBJECT_CMDLINE": fieldConversion{"journald.object.cmd", false, false}, + "OBJECT_COMM": fieldConversion{"journald.object.name", false, false}, + "OBJECT_EXE": fieldConversion{"journald.object.executable", false, false}, + "OBJECT_GID": fieldConversion{"journald.object.gid", true, false}, + "OBJECT_PID": fieldConversion{"journald.object.pid", true, false}, + "OBJECT_SYSTEMD_OWNER_UID": fieldConversion{"journald.object.systemd.owner_uid", true, false}, + "OBJECT_SYSTEMD_SESSION": fieldConversion{"journald.object.systemd.session", false, false}, + "OBJECT_SYSTEMD_UNIT": fieldConversion{"journald.object.systemd.unit", false, false}, + "OBJECT_SYSTEMD_USER_UNIT": fieldConversion{"journald.object.systemd.user_unit", false, false}, + "OBJECT_UID": fieldConversion{"journald.object.uid", true, false}, + "_KERNEL_DEVICE": fieldConversion{"journald.kernel.device", false, false}, + "_KERNEL_SUBSYSTEM": fieldConversion{"journald.kernel.subsystem", false, false}, + "_SYSTEMD_INVOCATION_ID": fieldConversion{"systemd.invocation_id", false, false}, + "_SYSTEMD_USER_SLICE": fieldConversion{"systemd.user_slice", false, false}, + "_UDEV_DEVLINK": fieldConversion{"journald.kernel.device_symlinks", false, false}, // TODO aggregate multiple elements + "_UDEV_DEVNODE": fieldConversion{"journald.kernel.device_node_path", false, false}, + "_UDEV_SYSNAME": fieldConversion{"journald.kernel.device_name", false, false}, + sdjournal.SD_JOURNAL_FIELD_AUDIT_LOGINUID: fieldConversion{"process.audit.login_uid", true, false}, + sdjournal.SD_JOURNAL_FIELD_AUDIT_SESSION: fieldConversion{"process.audit.session", false, false}, + sdjournal.SD_JOURNAL_FIELD_BOOT_ID: fieldConversion{"host.boot_id", false, false}, + sdjournal.SD_JOURNAL_FIELD_CAP_EFFECTIVE: fieldConversion{"process.capabilites", false, false}, + sdjournal.SD_JOURNAL_FIELD_CMDLINE: fieldConversion{"process.cmd", false, false}, + sdjournal.SD_JOURNAL_FIELD_CODE_FILE: fieldConversion{"journald.code.file", false, false}, + sdjournal.SD_JOURNAL_FIELD_CODE_FUNC: fieldConversion{"journald.code.func", false, false}, + sdjournal.SD_JOURNAL_FIELD_CODE_LINE: fieldConversion{"journald.code.line", true, false}, + sdjournal.SD_JOURNAL_FIELD_COMM: fieldConversion{"process.name", false, false}, + sdjournal.SD_JOURNAL_FIELD_EXE: fieldConversion{"process.executable", false, false}, + sdjournal.SD_JOURNAL_FIELD_GID: fieldConversion{"process.uid", true, false}, + sdjournal.SD_JOURNAL_FIELD_HOSTNAME: fieldConversion{"host.name", false, false}, + sdjournal.SD_JOURNAL_FIELD_MACHINE_ID: fieldConversion{"host.id", true, false}, + sdjournal.SD_JOURNAL_FIELD_MESSAGE: fieldConversion{"message", false, false}, + sdjournal.SD_JOURNAL_FIELD_PID: fieldConversion{"process.pid", true, false}, + sdjournal.SD_JOURNAL_FIELD_PRIORITY: fieldConversion{"syslog.priority", true, false}, + sdjournal.SD_JOURNAL_FIELD_SYSLOG_FACILITY: fieldConversion{"syslog.facility", true, false}, + sdjournal.SD_JOURNAL_FIELD_SYSLOG_IDENTIFIER: fieldConversion{"syslog.identifier", false, false}, + sdjournal.SD_JOURNAL_FIELD_SYSLOG_PID: fieldConversion{"syslog.pid", true, false}, + sdjournal.SD_JOURNAL_FIELD_SYSTEMD_CGROUP: fieldConversion{"systemd.cgroup", false, false}, + sdjournal.SD_JOURNAL_FIELD_SYSTEMD_OWNER_UID: fieldConversion{"systemd.owner_uid", true, false}, + sdjournal.SD_JOURNAL_FIELD_SYSTEMD_SESSION: fieldConversion{"systemd.session", false, false}, + sdjournal.SD_JOURNAL_FIELD_SYSTEMD_SLICE: fieldConversion{"systemd.slice", false, false}, + sdjournal.SD_JOURNAL_FIELD_SYSTEMD_UNIT: fieldConversion{"systemd.unit", false, false}, + sdjournal.SD_JOURNAL_FIELD_SYSTEMD_USER_UNIT: fieldConversion{"systemd.user_unit", false, false}, + sdjournal.SD_JOURNAL_FIELD_TRANSPORT: fieldConversion{"systemd.transport", false, false}, + sdjournal.SD_JOURNAL_FIELD_UID: fieldConversion{"process.uid", true, false}, // docker journald fields from: https://docs.docker.com/config/containers/logging/journald/ - "CONTAINER_ID": FieldConversion{"conatiner.id_truncated", false, false}, - "CONTAINER_ID_FULL": FieldConversion{"container.id", false, false}, - "CONTAINER_NAME": FieldConversion{"container.name", false, false}, - "CONTAINER_TAG": FieldConversion{"container.image.tag", false, false}, - "CONTAINER_PARTIAL_MESSAGE": FieldConversion{"container.partial", false, false}, + "CONTAINER_ID": fieldConversion{"conatiner.id_truncated", false, false}, + "CONTAINER_ID_FULL": fieldConversion{"container.id", false, false}, + "CONTAINER_NAME": fieldConversion{"container.name", false, false}, + "CONTAINER_TAG": fieldConversion{"container.image.tag", false, false}, + "CONTAINER_PARTIAL_MESSAGE": fieldConversion{"container.partial", false, false}, // dropped fields - sdjournal.SD_JOURNAL_FIELD_MONOTONIC_TIMESTAMP: FieldConversion{"", false, true}, // saved in the registry - sdjournal.SD_JOURNAL_FIELD_SOURCE_REALTIME_TIMESTAMP: FieldConversion{"", false, true}, // saved in the registry - sdjournal.SD_JOURNAL_FIELD_CURSOR: FieldConversion{"", false, true}, // saved in the registry - "_SOURCE_MONOTONIC_TIMESTAMP": FieldConversion{"", false, true}, // received timestamp stored in @timestamp + sdjournal.SD_JOURNAL_FIELD_MONOTONIC_TIMESTAMP: fieldConversion{"", false, true}, // saved in the registry + sdjournal.SD_JOURNAL_FIELD_SOURCE_REALTIME_TIMESTAMP: fieldConversion{"", false, true}, // saved in the registry + sdjournal.SD_JOURNAL_FIELD_CURSOR: fieldConversion{"", false, true}, // saved in the registry + "_SOURCE_MONOTONIC_TIMESTAMP": fieldConversion{"", false, true}, // received timestamp stored in @timestamp } ) diff --git a/journalbeat/reader/journal.go b/journalbeat/reader/journal.go index 6ec58cd8f520..31818e199036 100644 --- a/journalbeat/reader/journal.go +++ b/journalbeat/reader/journal.go @@ -149,7 +149,7 @@ func setupMatches(j *sdjournal.Journal, matches []string) error { var p string for journalKey, eventField := range journaldEventFields { - if elems[0] == eventField.Name { + if elems[0] == eventField.name { p = journalKey + "=" + elems[1] } } @@ -249,17 +249,17 @@ func (r *Reader) toEvent(entry *sdjournal.JournalEntry) *beat.Event { normalized := strings.ToLower(strings.TrimLeft(k, "_")) custom.Put(normalized, v) } else { - if !kk.Dropped { - if kk.IsInteger { + if !kk.dropped { + if kk.isInteger { vv, err := strconv.ParseInt(v, 10, 64) if err != nil { - r.logger.Debug("Failed to convert field: %s %v to int: %v", kk.Name, v, err) - fields.Put(kk.Name, v) + r.logger.Debug("Failed to convert field: %s %v to int: %v", kk.name, v, err) + fields.Put(kk.name, v) continue } - fields.Put(kk.Name, vv) + fields.Put(kk.name, vv) } else { - fields.Put(kk.Name, v) + fields.Put(kk.name, v) } } }